1 : <?php
2 : /**
3 : * Smarty Internal Plugin Templateparser
4 : *
5 : * This is the template parser.
6 : * It is generated from the internal.templateparser.y file
7 : * @package Smarty
8 : * @subpackage Compiler
9 : * @author Uwe Tews
10 : */
11 :
12 : /**
13 : * This can be used to store both the string representation of
14 : * a token, and any useful meta-data associated with the token.
15 : *
16 : * meta-data should be stored as an array
17 : */
18 1 : class TP_yyToken implements ArrayAccess
19 : {
20 : public $string = '';
21 : public $metadata = array();
22 :
23 : function __construct($s, $m = array())
24 : {
25 0 : if ($s instanceof TP_yyToken) {
26 0 : $this->string = $s->string;
27 0 : $this->metadata = $s->metadata;
28 0 : } else {
29 0 : $this->string = (string) $s;
30 0 : if ($m instanceof TP_yyToken) {
31 0 : $this->metadata = $m->metadata;
32 0 : } elseif (is_array($m)) {
33 0 : $this->metadata = $m;
34 0 : }
35 : }
36 0 : }
37 :
38 : function __toString()
39 : {
40 0 : return $this->_string;
41 : }
42 :
43 : function offsetExists($offset)
44 : {
45 0 : return isset($this->metadata[$offset]);
46 : }
47 :
48 : function offsetGet($offset)
49 : {
50 0 : return $this->metadata[$offset];
51 : }
52 :
53 : function offsetSet($offset, $value)
54 : {
55 0 : if ($offset === null) {
56 0 : if (isset($value[0])) {
57 0 : $x = ($value instanceof TP_yyToken) ?
58 0 : $value->metadata : $value;
59 0 : $this->metadata = array_merge($this->metadata, $x);
60 0 : return;
61 : }
62 0 : $offset = count($this->metadata);
63 0 : }
64 0 : if ($value === null) {
65 0 : return;
66 : }
67 0 : if ($value instanceof TP_yyToken) {
68 0 : if ($value->metadata) {
69 0 : $this->metadata[$offset] = $value->metadata;
70 0 : }
71 0 : } elseif ($value) {
72 0 : $this->metadata[$offset] = $value;
73 0 : }
74 0 : }
75 :
76 : function offsetUnset($offset)
77 : {
78 0 : unset($this->metadata[$offset]);
79 0 : }
80 : }
81 :
82 : /** The following structure represents a single element of the
83 : * parser's stack. Information stored includes:
84 : *
85 : * + The state number for the parser at this level of the stack.
86 : *
87 : * + The value of the token stored at this level of the stack.
88 : * (In other words, the "major" token.)
89 : *
90 : * + The semantic value stored at this level of the stack. This is
91 : * the information used by the action routines in the grammar.
92 : * It is sometimes called the "minor" token.
93 : */
94 : class TP_yyStackEntry
95 1 : {
96 : public $stateno; /* The state-number */
97 : public $major; /* The major token value. This is the code
98 : ** number for the token at this stack level */
99 : public $minor; /* The user-supplied minor token value. This
100 : ** is the value of the token */
101 : };
102 :
103 : // code external to the class is included here
104 :
105 : // declare_class is output here
106 : #line 12 "internal.templateparser.y"
107 : class Smarty_Internal_Templateparser#line 109 "internal.templateparser.php"
108 1 : {
109 : /* First off, code is included which follows the "include_class" declaration
110 : ** in the input file. */
111 : #line 14 "internal.templateparser.y"
112 :
113 : // states whether the parse was successful or not
114 : public $successful = true;
115 : public $retvalue = 0;
116 : private $lex;
117 : private $internalError = false;
118 :
119 : function __construct($lex, $compiler) {
120 : // set instance object
121 345 : self::instance($this);
122 345 : $this->lex = $lex;
123 345 : $this->compiler = $compiler;
124 345 : $this->smarty = $this->compiler->smarty;
125 345 : $this->template = $this->compiler->template;
126 345 : if ($this->template->security && isset($this->smarty->security_handler)) {
127 337 : $this->sec_obj = $this->smarty->security_policy;
128 337 : } else {
129 9 : $this->sec_obj = $this->smarty;
130 : }
131 345 : $this->cacher = $this->template->cacher_object;
132 345 : $this->nocache = false;
133 345 : $this->prefix_code = array();
134 345 : $this->prefix_number = 0;
135 345 : }
136 : public static function &instance($new_instance = null)
137 : {
138 345 : static $instance = null;
139 345 : if (isset($new_instance) && is_object($new_instance))
140 345 : $instance = $new_instance;
141 345 : return $instance;
142 : }
143 :
144 : #line 147 "internal.templateparser.php"
145 :
146 : /* Next is all token values, as class constants
147 : */
148 : /*
149 : ** These constants (all generated automatically by the parser generator)
150 : ** specify the various kinds of tokens (terminals) that the parser
151 : ** understands.
152 : **
153 : ** Each symbol here is a terminal symbol in the grammar.
154 : */
155 : const TP_OTHER = 1;
156 : const TP_XML = 2;
157 : const TP_PHP = 3;
158 : const TP_SHORTTAGSTART = 4;
159 : const TP_SHORTTAGEND = 5;
160 : const TP_PHPSTART = 6;
161 : const TP_PHPEND = 7;
162 : const TP_COMMENTEND = 8;
163 : const TP_COMMENTSTART = 9;
164 : const TP_SINGLEQUOTE = 10;
165 : const TP_LITERALSTART = 11;
166 : const TP_LITERALEND = 12;
167 : const TP_LDELIMTAG = 13;
168 : const TP_RDELIMTAG = 14;
169 : const TP_LDELSLASH = 15;
170 : const TP_LDEL = 16;
171 : const TP_RDEL = 17;
172 : const TP_ISIN = 18;
173 : const TP_AS = 19;
174 : const TP_BOOLEAN = 20;
175 : const TP_NULL = 21;
176 : const TP_IDENTITY = 22;
177 : const TP_NONEIDENTITY = 23;
178 : const TP_EQUALS = 24;
179 : const TP_NOTEQUALS = 25;
180 : const TP_GREATEREQUAL = 26;
181 : const TP_LESSEQUAL = 27;
182 : const TP_GREATERTHAN = 28;
183 : const TP_LESSTHAN = 29;
184 : const TP_NOT = 30;
185 : const TP_LAND = 31;
186 : const TP_LOR = 32;
187 : const TP_LXOR = 33;
188 : const TP_ISODDBY = 34;
189 : const TP_ISNOTODDBY = 35;
190 : const TP_ISODD = 36;
191 : const TP_ISNOTODD = 37;
192 : const TP_ISEVENBY = 38;
193 : const TP_ISNOTEVENBY = 39;
194 : const TP_ISEVEN = 40;
195 : const TP_ISNOTEVEN = 41;
196 : const TP_ISDIVBY = 42;
197 : const TP_ISNOTDIVBY = 43;
198 : const TP_OPENP = 44;
199 : const TP_CLOSEP = 45;
200 : const TP_OPENB = 46;
201 : const TP_CLOSEB = 47;
202 : const TP_PTR = 48;
203 : const TP_APTR = 49;
204 : const TP_EQUAL = 50;
205 : const TP_INTEGER = 51;
206 : const TP_INCDEC = 52;
207 : const TP_UNIMATH = 53;
208 : const TP_MATH = 54;
209 : const TP_DOLLAR = 55;
210 : const TP_COLON = 56;
211 : const TP_DOUBLECOLON = 57;
212 : const TP_SEMICOLON = 58;
213 : const TP_AT = 59;
214 : const TP_HATCH = 60;
215 : const TP_QUOTE = 61;
216 : const TP_BACKTICK = 62;
217 : const TP_VERT = 63;
218 : const TP_DOT = 64;
219 : const TP_COMMA = 65;
220 : const TP_ANDSYM = 66;
221 : const TP_ID = 67;
222 : const TP_SPACE = 68;
223 : const TP_INSTANCEOF = 69;
224 : const YY_NO_ACTION = 448;
225 : const YY_ACCEPT_ACTION = 447;
226 : const YY_ERROR_ACTION = 446;
227 :
228 : /* Next are that tables used to determine what action to take based on the
229 : ** current state and lookahead token. These tables are used to implement
230 : ** functions that take a state number and lookahead value and return an
231 : ** action integer.
232 : **
233 : ** Suppose the action integer is N. Then the action is determined as
234 : ** follows
235 : **
236 : ** 0 <= N < self::YYNSTATE Shift N. That is,
237 : ** push the lookahead
238 : ** token onto the stack
239 : ** and goto state N.
240 : **
241 : ** self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE Reduce by rule N-YYNSTATE.
242 : **
243 : ** N == self::YYNSTATE+self::YYNRULE A syntax error has occurred.
244 : **
245 : ** N == self::YYNSTATE+self::YYNRULE+1 The parser accepts its
246 : ** input. (and concludes parsing)
247 : **
248 : ** N == self::YYNSTATE+self::YYNRULE+2 No such action. Denotes unused
249 : ** slots in the yy_action[] table.
250 : **
251 : ** The action table is constructed as a single large static array $yy_action.
252 : ** Given state S and lookahead X, the action is computed as
253 : **
254 : ** self::$yy_action[self::$yy_shift_ofst[S] + X ]
255 : **
256 : ** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value
257 : ** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if
258 : ** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that
259 : ** the action is not in the table and that self::$yy_default[S] should be used instead.
260 : **
261 : ** The formula above is for computing the action when the lookahead is
262 : ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
263 : ** a reduce action) then the static $yy_reduce_ofst array is used in place of
264 : ** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of
265 : ** self::YY_SHIFT_USE_DFLT.
266 : **
267 : ** The following are the tables generated in this section:
268 : **
269 : ** self::$yy_action A single table containing all actions.
270 : ** self::$yy_lookahead A table containing the lookahead for each entry in
271 : ** yy_action. Used to detect hash collisions.
272 : ** self::$yy_shift_ofst For each state, the offset into self::$yy_action for
273 : ** shifting terminals.
274 : ** self::$yy_reduce_ofst For each state, the offset into self::$yy_action for
275 : ** shifting non-terminals after a reduce.
276 : ** self::$yy_default Default action for each state.
277 : */
278 : const YY_SZ_ACTTAB = 933;
279 : static public $yy_action = array(
280 : /* 0 */ 252, 258, 259, 3, 4, 250, 251, 5, 2, 254,
281 : /* 10 */ 253, 11, 10, 27, 252, 258, 259, 3, 4, 250,
282 : /* 20 */ 251, 5, 2, 254, 253, 11, 10, 165, 265, 56,
283 : /* 30 */ 261, 218, 56, 27, 71, 20, 55, 27, 20, 239,
284 : /* 40 */ 240, 171, 239, 240, 189, 185, 57, 155, 187, 6,
285 : /* 50 */ 58, 272, 66, 242, 59, 44, 200, 201, 113, 19,
286 : /* 60 */ 32, 181, 176, 8, 260, 12, 24, 21, 12, 199,
287 : /* 70 */ 164, 21, 37, 164, 61, 37, 178, 58, 42, 44,
288 : /* 80 */ 52, 56, 44, 52, 260, 153, 144, 20, 260, 139,
289 : /* 90 */ 182, 239, 240, 71, 135, 252, 258, 259, 3, 4,
290 : /* 100 */ 250, 251, 5, 2, 254, 253, 11, 10, 202, 447,
291 : /* 110 */ 85, 186, 242, 67, 56, 24, 15, 56, 27, 28,
292 : /* 120 */ 20, 30, 164, 20, 239, 240, 58, 239, 240, 105,
293 : /* 130 */ 212, 44, 52, 147, 6, 36, 56, 193, 145, 274,
294 : /* 140 */ 147, 194, 20, 184, 210, 213, 239, 240, 8, 238,
295 : /* 150 */ 12, 24, 29, 12, 264, 164, 38, 37, 164, 63,
296 : /* 160 */ 37, 225, 61, 111, 44, 52, 136, 44, 52, 260,
297 : /* 170 */ 24, 138, 12, 169, 41, 224, 71, 164, 56, 37,
298 : /* 180 */ 232, 61, 103, 71, 20, 147, 44, 52, 239, 240,
299 : /* 190 */ 181, 234, 270, 144, 93, 242, 246, 56, 269, 175,
300 : /* 200 */ 56, 212, 242, 20, 256, 206, 20, 239, 240, 212,
301 : /* 210 */ 239, 240, 24, 15, 12, 58, 213, 159, 216, 164,
302 : /* 220 */ 44, 37, 147, 61, 213, 181, 105, 183, 44, 52,
303 : /* 230 */ 207, 24, 147, 12, 24, 41, 12, 1, 164, 15,
304 : /* 240 */ 37, 164, 58, 37, 147, 58, 212, 44, 52, 56,
305 : /* 250 */ 44, 52, 105, 319, 148, 20, 9, 146, 26, 239,
306 : /* 260 */ 240, 213, 232, 128, 51, 71, 184, 210, 79, 166,
307 : /* 270 */ 143, 56, 317, 142, 167, 152, 93, 20, 246, 38,
308 : /* 280 */ 15, 239, 240, 24, 242, 12, 25, 168, 15, 257,
309 : /* 290 */ 164, 191, 37, 105, 61, 134, 212, 58, 71, 44,
310 : /* 300 */ 52, 105, 44, 190, 319, 24, 140, 12, 174, 102,
311 : /* 310 */ 31, 213, 164, 197, 27, 131, 58, 242, 136, 271,
312 : /* 320 */ 133, 44, 52, 181, 372, 35, 223, 224, 148, 211,
313 : /* 330 */ 267, 282, 281, 280, 268, 278, 279, 14, 17, 32,
314 : /* 340 */ 35, 40, 184, 210, 211, 267, 282, 281, 280, 268,
315 : /* 350 */ 278, 279, 256, 117, 118, 38, 244, 42, 241, 241,
316 : /* 360 */ 232, 151, 97, 71, 266, 137, 147, 372, 33, 249,
317 : /* 370 */ 147, 234, 270, 147, 93, 372, 246, 232, 263, 147,
318 : /* 380 */ 71, 16, 242, 125, 104, 147, 132, 205, 284, 283,
319 : /* 390 */ 150, 277, 222, 246, 232, 224, 51, 71, 65, 242,
320 : /* 400 */ 81, 123, 13, 217, 108, 170, 270, 58, 93, 27,
321 : /* 410 */ 246, 232, 44, 51, 71, 92, 242, 84, 98, 229,
322 : /* 420 */ 121, 257, 170, 270, 56, 93, 106, 246, 232, 263,
323 : /* 430 */ 20, 71, 224, 242, 239, 240, 48, 136, 257, 275,
324 : /* 440 */ 232, 149, 51, 71, 246, 27, 76, 209, 43, 220,
325 : /* 450 */ 242, 170, 270, 136, 93, 230, 246, 101, 24, 147,
326 : /* 460 */ 141, 86, 242, 36, 181, 164, 127, 257, 232, 58,
327 : /* 470 */ 103, 71, 272, 226, 44, 52, 208, 22, 224, 234,
328 : /* 480 */ 270, 148, 93, 232, 246, 51, 71, 285, 178, 77,
329 : /* 490 */ 242, 235, 212, 91, 170, 270, 260, 93, 96, 246,
330 : /* 500 */ 232, 214, 51, 71, 53, 242, 83, 213, 272, 94,
331 : /* 510 */ 257, 170, 270, 272, 93, 40, 246, 23, 232, 272,
332 : /* 520 */ 51, 71, 242, 119, 80, 126, 90, 257, 241, 170,
333 : /* 530 */ 270, 196, 93, 156, 246, 177, 232, 224, 50, 71,
334 : /* 540 */ 242, 17, 75, 220, 95, 257, 232, 170, 270, 71,
335 : /* 550 */ 93, 54, 246, 232, 192, 51, 71, 231, 242, 78,
336 : /* 560 */ 220, 34, 246, 257, 170, 270, 272, 93, 242, 246,
337 : /* 570 */ 120, 262, 116, 181, 62, 242, 188, 241, 220, 180,
338 : /* 580 */ 257, 232, 224, 51, 71, 245, 198, 74, 232, 195,
339 : /* 590 */ 51, 71, 170, 270, 82, 93, 307, 246, 68, 170,
340 : /* 600 */ 270, 162, 93, 242, 246, 25, 73, 233, 257, 243,
341 : /* 610 */ 242, 160, 248, 237, 64, 257, 46, 60, 122, 273,
342 : /* 620 */ 72, 157, 204, 215, 228, 234, 270, 203, 93, 263,
343 : /* 630 */ 246, 39, 161, 244, 163, 70, 242, 64, 7, 47,
344 : /* 640 */ 60, 232, 100, 40, 71, 227, 236, 18, 234, 270,
345 : /* 650 */ 247, 93, 255, 246, 34, 173, 45, 246, 232, 242,
346 : /* 660 */ 97, 71, 235, 242, 69, 232, 273, 103, 71, 234,
347 : /* 670 */ 270, 273, 93, 273, 246, 273, 234, 270, 273, 93,
348 : /* 680 */ 242, 246, 273, 273, 179, 172, 372, 242, 64, 276,
349 : /* 690 */ 47, 60, 273, 273, 273, 232, 273, 103, 71, 234,
350 : /* 700 */ 270, 273, 93, 273, 246, 273, 234, 270, 205, 93,
351 : /* 710 */ 242, 246, 273, 273, 154, 273, 372, 242, 372, 232,
352 : /* 720 */ 372, 273, 71, 13, 273, 273, 158, 273, 273, 372,
353 : /* 730 */ 219, 273, 273, 273, 372, 246, 232, 372, 129, 71,
354 : /* 740 */ 273, 242, 273, 232, 273, 130, 71, 234, 270, 273,
355 : /* 750 */ 93, 273, 246, 273, 234, 270, 273, 93, 242, 246,
356 : /* 760 */ 273, 273, 149, 273, 232, 242, 49, 71, 221, 43,
357 : /* 770 */ 273, 273, 273, 273, 273, 234, 270, 273, 93, 273,
358 : /* 780 */ 246, 273, 232, 273, 112, 71, 242, 273, 273, 232,
359 : /* 790 */ 273, 114, 71, 234, 270, 273, 93, 273, 246, 273,
360 : /* 800 */ 234, 270, 273, 93, 242, 246, 273, 232, 273, 99,
361 : /* 810 */ 71, 242, 273, 273, 232, 273, 124, 71, 234, 270,
362 : /* 820 */ 273, 93, 273, 246, 273, 234, 270, 273, 93, 242,
363 : /* 830 */ 246, 273, 232, 273, 115, 71, 242, 273, 273, 273,
364 : /* 840 */ 273, 273, 273, 234, 270, 273, 93, 273, 246, 273,
365 : /* 850 */ 273, 273, 273, 232, 242, 109, 71, 273, 273, 273,
366 : /* 860 */ 232, 273, 110, 71, 234, 270, 273, 93, 273, 246,
367 : /* 870 */ 273, 234, 270, 273, 93, 242, 246, 273, 232, 273,
368 : /* 880 */ 107, 71, 242, 273, 273, 232, 273, 273, 71, 234,
369 : /* 890 */ 270, 273, 93, 273, 246, 273, 234, 270, 273, 87,
370 : /* 900 */ 242, 246, 273, 232, 273, 273, 71, 242, 273, 273,
371 : /* 910 */ 232, 273, 273, 71, 234, 270, 273, 88, 273, 246,
372 : /* 920 */ 273, 234, 270, 273, 89, 242, 246, 273, 273, 273,
373 : /* 930 */ 273, 273, 242,
374 : );
375 : static public $yy_lookahead = array(
376 : /* 0 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
377 : /* 10 */ 41, 42, 43, 16, 31, 32, 33, 34, 35, 36,
378 : /* 20 */ 37, 38, 39, 40, 41, 42, 43, 58, 45, 10,
379 : /* 30 */ 84, 77, 10, 16, 80, 16, 86, 16, 16, 20,
380 : /* 40 */ 21, 48, 20, 21, 1, 2, 3, 4, 5, 30,
381 : /* 50 */ 55, 101, 9, 99, 11, 60, 13, 14, 15, 16,
382 : /* 60 */ 46, 68, 67, 44, 67, 46, 44, 50, 46, 47,
383 : /* 70 */ 51, 50, 53, 51, 55, 53, 59, 55, 64, 60,
384 : /* 80 */ 61, 10, 60, 61, 67, 19, 67, 16, 67, 67,
385 : /* 90 */ 77, 20, 21, 80, 17, 31, 32, 33, 34, 35,
386 : /* 100 */ 36, 37, 38, 39, 40, 41, 42, 43, 1, 71,
387 : /* 110 */ 72, 73, 99, 55, 10, 44, 44, 10, 16, 49,
388 : /* 120 */ 16, 49, 51, 16, 20, 21, 55, 20, 21, 57,
389 : /* 130 */ 1, 60, 61, 63, 30, 69, 10, 47, 67, 17,
390 : /* 140 */ 63, 12, 16, 53, 54, 16, 20, 21, 44, 90,
391 : /* 150 */ 46, 44, 50, 46, 52, 51, 66, 53, 51, 55,
392 : /* 160 */ 53, 1, 55, 78, 60, 61, 81, 60, 61, 67,
393 : /* 170 */ 44, 67, 46, 77, 67, 90, 80, 51, 10, 53,
394 : /* 180 */ 77, 55, 79, 80, 16, 63, 60, 61, 20, 21,
395 : /* 190 */ 68, 88, 89, 67, 91, 99, 93, 10, 17, 96,
396 : /* 200 */ 10, 1, 99, 16, 45, 5, 16, 20, 21, 1,
397 : /* 210 */ 20, 21, 44, 44, 46, 55, 16, 48, 10, 51,
398 : /* 220 */ 60, 53, 63, 55, 16, 68, 57, 67, 60, 61,
399 : /* 230 */ 17, 44, 63, 46, 44, 67, 46, 68, 51, 44,
400 : /* 240 */ 53, 51, 55, 53, 63, 55, 1, 60, 61, 10,
401 : /* 250 */ 60, 61, 57, 17, 67, 16, 58, 67, 16, 20,
402 : /* 260 */ 21, 16, 77, 65, 79, 80, 53, 54, 83, 84,
403 : /* 270 */ 85, 10, 17, 88, 89, 55, 91, 16, 93, 66,
404 : /* 280 */ 44, 20, 21, 44, 99, 46, 50, 67, 44, 104,
405 : /* 290 */ 51, 47, 53, 57, 55, 77, 1, 55, 80, 60,
406 : /* 300 */ 61, 57, 60, 8, 68, 44, 67, 46, 64, 67,
407 : /* 310 */ 16, 16, 51, 95, 16, 78, 55, 99, 81, 47,
408 : /* 320 */ 17, 60, 61, 68, 16, 18, 1, 90, 67, 22,
409 : /* 330 */ 23, 24, 25, 26, 27, 28, 29, 65, 44, 46,
410 : /* 340 */ 18, 48, 53, 54, 22, 23, 24, 25, 26, 27,
411 : /* 350 */ 28, 29, 45, 97, 97, 66, 100, 64, 102, 102,
412 : /* 360 */ 77, 59, 79, 80, 87, 67, 63, 59, 16, 67,
413 : /* 370 */ 63, 88, 89, 63, 91, 67, 93, 77, 101, 63,
414 : /* 380 */ 80, 65, 99, 78, 98, 63, 81, 1, 88, 89,
415 : /* 390 */ 107, 108, 67, 93, 77, 90, 79, 80, 55, 99,
416 : /* 400 */ 83, 82, 16, 51, 98, 88, 89, 55, 91, 16,
417 : /* 410 */ 93, 77, 60, 79, 80, 76, 99, 83, 98, 67,
418 : /* 420 */ 78, 104, 88, 89, 10, 91, 98, 93, 77, 101,
419 : /* 430 */ 16, 80, 90, 99, 20, 21, 82, 81, 104, 88,
420 : /* 440 */ 77, 55, 79, 80, 93, 16, 83, 61, 62, 110,
421 : /* 450 */ 99, 88, 89, 81, 91, 60, 93, 86, 44, 63,
422 : /* 460 */ 67, 94, 99, 69, 68, 51, 78, 104, 77, 55,
423 : /* 470 */ 79, 80, 101, 62, 60, 61, 109, 105, 90, 88,
424 : /* 480 */ 89, 67, 91, 77, 93, 79, 80, 96, 59, 83,
425 : /* 490 */ 99, 103, 1, 86, 88, 89, 67, 91, 86, 93,
426 : /* 500 */ 77, 10, 79, 80, 86, 99, 83, 16, 101, 76,
427 : /* 510 */ 104, 88, 89, 101, 91, 48, 93, 50, 77, 101,
428 : /* 520 */ 79, 80, 99, 97, 83, 78, 76, 104, 102, 88,
429 : /* 530 */ 89, 47, 91, 67, 93, 19, 77, 90, 79, 80,
430 : /* 540 */ 99, 44, 83, 110, 76, 104, 77, 88, 89, 80,
431 : /* 550 */ 91, 86, 93, 77, 67, 79, 80, 88, 99, 83,
432 : /* 560 */ 110, 56, 93, 104, 88, 89, 101, 91, 99, 93,
433 : /* 570 */ 78, 17, 97, 68, 55, 99, 45, 102, 110, 67,
434 : /* 580 */ 104, 77, 90, 79, 80, 67, 45, 83, 77, 17,
435 : /* 590 */ 79, 80, 88, 89, 83, 91, 17, 93, 55, 88,
436 : /* 600 */ 89, 55, 91, 99, 93, 50, 45, 51, 104, 60,
437 : /* 610 */ 99, 74, 67, 17, 77, 104, 79, 80, 67, 67,
438 : /* 620 */ 67, 64, 17, 110, 62, 88, 89, 5, 91, 101,
439 : /* 630 */ 93, 92, 67, 100, 74, 95, 99, 77, 106, 79,
440 : /* 640 */ 80, 77, 98, 48, 80, 109, 73, 44, 88, 89,
441 : /* 650 */ 102, 91, 88, 93, 56, 75, 98, 93, 77, 99,
442 : /* 660 */ 79, 80, 103, 99, 67, 77, 111, 79, 80, 88,
443 : /* 670 */ 89, 111, 91, 111, 93, 111, 88, 89, 111, 91,
444 : /* 680 */ 99, 93, 111, 111, 96, 74, 16, 99, 77, 108,
445 : /* 690 */ 79, 80, 111, 111, 111, 77, 111, 79, 80, 88,
446 : /* 700 */ 89, 111, 91, 111, 93, 111, 88, 89, 1, 91,
447 : /* 710 */ 99, 93, 111, 111, 96, 111, 46, 99, 48, 77,
448 : /* 720 */ 50, 111, 80, 16, 111, 111, 56, 111, 111, 59,
449 : /* 730 */ 88, 111, 111, 111, 64, 93, 77, 67, 79, 80,
450 : /* 740 */ 111, 99, 111, 77, 111, 79, 80, 88, 89, 111,
451 : /* 750 */ 91, 111, 93, 111, 88, 89, 111, 91, 99, 93,
452 : /* 760 */ 111, 111, 55, 111, 77, 99, 79, 80, 61, 62,
453 : /* 770 */ 111, 111, 111, 111, 111, 88, 89, 111, 91, 111,
454 : /* 780 */ 93, 111, 77, 111, 79, 80, 99, 111, 111, 77,
455 : /* 790 */ 111, 79, 80, 88, 89, 111, 91, 111, 93, 111,
456 : /* 800 */ 88, 89, 111, 91, 99, 93, 111, 77, 111, 79,
457 : /* 810 */ 80, 99, 111, 111, 77, 111, 79, 80, 88, 89,
458 : /* 820 */ 111, 91, 111, 93, 111, 88, 89, 111, 91, 99,
459 : /* 830 */ 93, 111, 77, 111, 79, 80, 99, 111, 111, 111,
460 : /* 840 */ 111, 111, 111, 88, 89, 111, 91, 111, 93, 111,
461 : /* 850 */ 111, 111, 111, 77, 99, 79, 80, 111, 111, 111,
462 : /* 860 */ 77, 111, 79, 80, 88, 89, 111, 91, 111, 93,
463 : /* 870 */ 111, 88, 89, 111, 91, 99, 93, 111, 77, 111,
464 : /* 880 */ 79, 80, 99, 111, 111, 77, 111, 111, 80, 88,
465 : /* 890 */ 89, 111, 91, 111, 93, 111, 88, 89, 111, 91,
466 : /* 900 */ 99, 93, 111, 77, 111, 111, 80, 99, 111, 111,
467 : /* 910 */ 77, 111, 111, 80, 88, 89, 111, 91, 111, 93,
468 : /* 920 */ 111, 88, 89, 111, 91, 99, 93, 111, 111, 111,
469 : /* 930 */ 111, 111, 99,
470 : );
471 : const YY_SHIFT_USE_DFLT = -32;
472 : const YY_SHIFT_MAX = 183;
473 : static public $yy_shift_ofst = array(
474 : /* 0 */ 43, 104, 19, 19, 19, 19, 19, 19, 19, 19,
475 : /* 10 */ 19, 19, 239, 107, 239, 126, 126, 126, 126, 168,
476 : /* 20 */ 168, 126, 126, 126, 126, 126, 126, 126, 126, 126,
477 : /* 30 */ 126, 126, 22, 187, 190, 261, 71, 414, 414, 414,
478 : /* 40 */ 242, 169, 352, 160, -5, 293, 122, 396, 505, 396,
479 : /* 50 */ 307, 322, 386, 17, 102, 429, 491, 245, 393, 245,
480 : /* 60 */ 467, 298, -3, 298, 255, -3, 245, -3, -3, -7,
481 : /* 70 */ 595, 595, 157, 595, -31, -17, 64, 64, 64, 64,
482 : /* 80 */ 64, 64, 64, 64, 64, 43, 707, 90, 213, 289,
483 : /* 90 */ 208, 21, 295, 289, 129, 200, -3, 70, 14, 303,
484 : /* 100 */ 14, -3, 294, 316, 14, 220, 14, 159, 14, 77,
485 : /* 110 */ 181, 157, 310, 597, 310, 310, 595, 595, 595, 595,
486 : /* 120 */ 157, 157, 603, 598, 310, 157, 157, 157, 58, 310,
487 : /* 130 */ 310, 157, -32, -32, -32, -32, -32, 670, 236, 244,
488 : /* 140 */ 72, 308, 66, 198, 195, 195, 195, 302, 195, 325,
489 : /* 150 */ 272, 545, 551, 343, 561, 546, 555, 556, 552, 553,
490 : /* 160 */ 605, 622, 565, 596, 557, 543, 579, 516, 497, 395,
491 : /* 170 */ 394, 487, 554, 572, 512, 531, 549, 519, 518, 541,
492 : /* 180 */ 484, 466, 411, 562,
493 : );
494 : const YY_REDUCE_USE_DFLT = -55;
495 : const YY_REDUCE_MAX = 136;
496 : static public $yy_reduce_ofst = array(
497 : /* 0 */ 38, 185, 334, 363, 476, 441, 423, 406, 459, 504,
498 : /* 10 */ 511, 317, 283, 537, 581, 103, 391, 588, 618, 560,
499 : /* 20 */ 611, 659, 666, 687, 801, 705, 776, 783, 755, 737,
500 : /* 30 */ 712, 730, 808, 826, 833, 300, 564, 469, 351, 642,
501 : /* 40 */ 218, 305, -46, 13, 96, 256, 85, 85, 388, 237,
502 : /* 50 */ 372, 372, 367, 328, 277, 328, 450, 468, -50, 433,
503 : /* 60 */ 257, -50, 412, 418, 342, 371, 339, 407, 465, 492,
504 : /* 70 */ 475, 257, 447, 426, 532, 532, 532, 532, 532, 532,
505 : /* 80 */ 532, 532, 532, 532, 532, 573, 536, 539, 539, 539,
506 : /* 90 */ 513, 528, 513, 539, 513, 513, 528, 356, 533, 356,
507 : /* 100 */ 533, 528, 544, 356, 533, 540, 533, 356, 533, 356,
508 : /* 110 */ 356, 59, 356, 580, 356, 356, 548, 548, 548, 548,
509 : /* 120 */ 59, 59, 558, 559, 356, 59, 59, 59, -54, 356,
510 : /* 130 */ 356, 59, 354, 320, 286, 306, 319,
511 : );
512 : static public $yyExpectedTokens = array(
513 : /* 0 */ array(1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, ),
514 : /* 1 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
515 : /* 2 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
516 : /* 3 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
517 : /* 4 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
518 : /* 5 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
519 : /* 6 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
520 : /* 7 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
521 : /* 8 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
522 : /* 9 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
523 : /* 10 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
524 : /* 11 */ array(10, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
525 : /* 12 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
526 : /* 13 */ array(1, 10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
527 : /* 14 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
528 : /* 15 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
529 : /* 16 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
530 : /* 17 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
531 : /* 18 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
532 : /* 19 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
533 : /* 20 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
534 : /* 21 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
535 : /* 22 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
536 : /* 23 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
537 : /* 24 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
538 : /* 25 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
539 : /* 26 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
540 : /* 27 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
541 : /* 28 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
542 : /* 29 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
543 : /* 30 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
544 : /* 31 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
545 : /* 32 */ array(10, 16, 20, 21, 44, 46, 47, 51, 53, 55, 60, 61, 67, ),
546 : /* 33 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
547 : /* 34 */ array(10, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
548 : /* 35 */ array(10, 16, 20, 21, 44, 46, 51, 55, 60, 61, 67, ),
549 : /* 36 */ array(10, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
550 : /* 37 */ array(10, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
551 : /* 38 */ array(10, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
552 : /* 39 */ array(10, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
553 : /* 40 */ array(16, 55, 60, 67, ),
554 : /* 41 */ array(44, 48, 57, 63, 68, ),
555 : /* 42 */ array(16, 51, 55, 60, 67, ),
556 : /* 43 */ array(1, 55, 60, 67, ),
557 : /* 44 */ array(55, 60, 67, ),
558 : /* 45 */ array(46, 48, 64, ),
559 : /* 46 */ array(17, 63, 68, ),
560 : /* 47 */ array(63, 68, ),
561 : /* 48 */ array(56, 68, ),
562 : /* 49 */ array(63, 68, ),
563 : /* 50 */ array(18, 22, 23, 24, 25, 26, 27, 28, 29, 45, 63, ),
564 : /* 51 */ array(18, 22, 23, 24, 25, 26, 27, 28, 29, 63, ),
565 : /* 52 */ array(1, 16, 55, 61, 62, ),
566 : /* 53 */ array(16, 50, 59, 67, ),
567 : /* 54 */ array(16, 50, 52, 67, ),
568 : /* 55 */ array(16, 59, 67, ),
569 : /* 56 */ array(1, 10, 16, ),
570 : /* 57 */ array(1, 16, ),
571 : /* 58 */ array(16, 67, ),
572 : /* 59 */ array(1, 16, ),
573 : /* 60 */ array(48, 50, ),
574 : /* 61 */ array(16, 67, ),
575 : /* 62 */ array(16, 67, ),
576 : /* 63 */ array(16, 67, ),
577 : /* 64 */ array(17, 68, ),
578 : /* 65 */ array(16, 67, ),
579 : /* 66 */ array(1, 16, ),
580 : /* 67 */ array(16, 67, ),
581 : /* 68 */ array(16, 67, ),
582 : /* 69 */ array(48, 68, ),
583 : /* 70 */ array(48, ),
584 : /* 71 */ array(48, ),
585 : /* 72 */ array(68, ),
586 : /* 73 */ array(48, ),
587 : /* 74 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 58, ),
588 : /* 75 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, ),
589 : /* 76 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
590 : /* 77 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
591 : /* 78 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
592 : /* 79 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
593 : /* 80 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
594 : /* 81 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
595 : /* 82 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
596 : /* 83 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
597 : /* 84 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
598 : /* 85 */ array(1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, ),
599 : /* 86 */ array(1, 16, 55, 61, 62, ),
600 : /* 87 */ array(47, 53, 54, 66, ),
601 : /* 88 */ array(17, 53, 54, 66, ),
602 : /* 89 */ array(53, 54, 66, ),
603 : /* 90 */ array(1, 10, 16, ),
604 : /* 91 */ array(16, 50, 67, ),
605 : /* 92 */ array(1, 8, 16, ),
606 : /* 93 */ array(53, 54, 66, ),
607 : /* 94 */ array(1, 12, 16, ),
608 : /* 95 */ array(1, 5, 16, ),
609 : /* 96 */ array(16, 67, ),
610 : /* 97 */ array(49, 63, ),
611 : /* 98 */ array(46, 64, ),
612 : /* 99 */ array(17, 63, ),
613 : /* 100 */ array(46, 64, ),
614 : /* 101 */ array(16, 67, ),
615 : /* 102 */ array(16, 44, ),
616 : /* 103 */ array(63, 65, ),
617 : /* 104 */ array(46, 64, ),
618 : /* 105 */ array(55, 67, ),
619 : /* 106 */ array(46, 64, ),
620 : /* 107 */ array(45, 63, ),
621 : /* 108 */ array(46, 64, ),
622 : /* 109 */ array(17, 63, ),
623 : /* 110 */ array(17, 63, ),
624 : /* 111 */ array(68, ),
625 : /* 112 */ array(63, ),
626 : /* 113 */ array(67, ),
627 : /* 114 */ array(63, ),
628 : /* 115 */ array(63, ),
629 : /* 116 */ array(48, ),
630 : /* 117 */ array(48, ),
631 : /* 118 */ array(48, ),
632 : /* 119 */ array(48, ),
633 : /* 120 */ array(68, ),
634 : /* 121 */ array(68, ),
635 : /* 122 */ array(44, ),
636 : /* 123 */ array(56, ),
637 : /* 124 */ array(63, ),
638 : /* 125 */ array(68, ),
639 : /* 126 */ array(68, ),
640 : /* 127 */ array(68, ),
641 : /* 128 */ array(55, ),
642 : /* 129 */ array(63, ),
643 : /* 130 */ array(63, ),
644 : /* 131 */ array(68, ),
645 : /* 132 */ array(),
646 : /* 133 */ array(),
647 : /* 134 */ array(),
648 : /* 135 */ array(),
649 : /* 136 */ array(),
650 : /* 137 */ array(16, 46, 48, 50, 56, 59, 64, 67, ),
651 : /* 138 */ array(17, 44, 50, 57, 68, ),
652 : /* 139 */ array(44, 47, 57, 64, ),
653 : /* 140 */ array(44, 49, 57, ),
654 : /* 141 */ array(16, 59, 67, ),
655 : /* 142 */ array(19, 69, ),
656 : /* 143 */ array(58, 65, ),
657 : /* 144 */ array(44, 57, ),
658 : /* 145 */ array(44, 57, ),
659 : /* 146 */ array(44, 57, ),
660 : /* 147 */ array(59, 67, ),
661 : /* 148 */ array(44, 57, ),
662 : /* 149 */ array(1, 67, ),
663 : /* 150 */ array(47, 65, ),
664 : /* 151 */ array(67, ),
665 : /* 152 */ array(67, ),
666 : /* 153 */ array(55, ),
667 : /* 154 */ array(45, ),
668 : /* 155 */ array(55, ),
669 : /* 156 */ array(50, ),
670 : /* 157 */ array(51, ),
671 : /* 158 */ array(67, ),
672 : /* 159 */ array(67, ),
673 : /* 160 */ array(17, ),
674 : /* 161 */ array(5, ),
675 : /* 162 */ array(67, ),
676 : /* 163 */ array(17, ),
677 : /* 164 */ array(64, ),
678 : /* 165 */ array(55, ),
679 : /* 166 */ array(17, ),
680 : /* 167 */ array(19, ),
681 : /* 168 */ array(44, ),
682 : /* 169 */ array(60, ),
683 : /* 170 */ array(69, ),
684 : /* 171 */ array(67, ),
685 : /* 172 */ array(17, ),
686 : /* 173 */ array(17, ),
687 : /* 174 */ array(67, ),
688 : /* 175 */ array(45, ),
689 : /* 176 */ array(60, ),
690 : /* 177 */ array(55, ),
691 : /* 178 */ array(67, ),
692 : /* 179 */ array(45, ),
693 : /* 180 */ array(47, ),
694 : /* 181 */ array(67, ),
695 : /* 182 */ array(62, ),
696 : /* 183 */ array(62, ),
697 : /* 184 */ array(),
698 : /* 185 */ array(),
699 : /* 186 */ array(),
700 : /* 187 */ array(),
701 : /* 188 */ array(),
702 : /* 189 */ array(),
703 : /* 190 */ array(),
704 : /* 191 */ array(),
705 : /* 192 */ array(),
706 : /* 193 */ array(),
707 : /* 194 */ array(),
708 : /* 195 */ array(),
709 : /* 196 */ array(),
710 : /* 197 */ array(),
711 : /* 198 */ array(),
712 : /* 199 */ array(),
713 : /* 200 */ array(),
714 : /* 201 */ array(),
715 : /* 202 */ array(),
716 : /* 203 */ array(),
717 : /* 204 */ array(),
718 : /* 205 */ array(),
719 : /* 206 */ array(),
720 : /* 207 */ array(),
721 : /* 208 */ array(),
722 : /* 209 */ array(),
723 : /* 210 */ array(),
724 : /* 211 */ array(),
725 : /* 212 */ array(),
726 : /* 213 */ array(),
727 : /* 214 */ array(),
728 : /* 215 */ array(),
729 : /* 216 */ array(),
730 : /* 217 */ array(),
731 : /* 218 */ array(),
732 : /* 219 */ array(),
733 : /* 220 */ array(),
734 : /* 221 */ array(),
735 : /* 222 */ array(),
736 : /* 223 */ array(),
737 : /* 224 */ array(),
738 : /* 225 */ array(),
739 : /* 226 */ array(),
740 : /* 227 */ array(),
741 : /* 228 */ array(),
742 : /* 229 */ array(),
743 : /* 230 */ array(),
744 : /* 231 */ array(),
745 : /* 232 */ array(),
746 : /* 233 */ array(),
747 : /* 234 */ array(),
748 : /* 235 */ array(),
749 : /* 236 */ array(),
750 : /* 237 */ array(),
751 : /* 238 */ array(),
752 : /* 239 */ array(),
753 : /* 240 */ array(),
754 : /* 241 */ array(),
755 : /* 242 */ array(),
756 : /* 243 */ array(),
757 : /* 244 */ array(),
758 : /* 245 */ array(),
759 : /* 246 */ array(),
760 : /* 247 */ array(),
761 : /* 248 */ array(),
762 : /* 249 */ array(),
763 : /* 250 */ array(),
764 : /* 251 */ array(),
765 : /* 252 */ array(),
766 : /* 253 */ array(),
767 : /* 254 */ array(),
768 : /* 255 */ array(),
769 : /* 256 */ array(),
770 : /* 257 */ array(),
771 : /* 258 */ array(),
772 : /* 259 */ array(),
773 : /* 260 */ array(),
774 : /* 261 */ array(),
775 : /* 262 */ array(),
776 : /* 263 */ array(),
777 : /* 264 */ array(),
778 : /* 265 */ array(),
779 : /* 266 */ array(),
780 : /* 267 */ array(),
781 : /* 268 */ array(),
782 : /* 269 */ array(),
783 : /* 270 */ array(),
784 : /* 271 */ array(),
785 : /* 272 */ array(),
786 : /* 273 */ array(),
787 : /* 274 */ array(),
788 : /* 275 */ array(),
789 : /* 276 */ array(),
790 : /* 277 */ array(),
791 : /* 278 */ array(),
792 : /* 279 */ array(),
793 : /* 280 */ array(),
794 : /* 281 */ array(),
795 : /* 282 */ array(),
796 : /* 283 */ array(),
797 : /* 284 */ array(),
798 : /* 285 */ array(),
799 : );
800 : static public $yy_default = array(
801 : /* 0 */ 446, 446, 446, 446, 446, 446, 446, 446, 446, 446,
802 : /* 10 */ 446, 446, 427, 446, 446, 386, 386, 386, 386, 446,
803 : /* 20 */ 446, 446, 446, 446, 446, 446, 446, 446, 446, 446,
804 : /* 30 */ 446, 446, 446, 446, 446, 446, 446, 446, 446, 446,
805 : /* 40 */ 446, 317, 446, 446, 446, 350, 446, 317, 317, 317,
806 : /* 50 */ 396, 396, 446, 361, 446, 361, 446, 446, 446, 446,
807 : /* 60 */ 354, 446, 446, 446, 334, 446, 446, 446, 446, 317,
808 : /* 70 */ 345, 354, 317, 346, 446, 446, 409, 400, 410, 306,
809 : /* 80 */ 405, 401, 402, 394, 406, 286, 446, 446, 446, 391,
810 : /* 90 */ 446, 446, 446, 324, 446, 446, 312, 430, 380, 446,
811 : /* 100 */ 377, 311, 361, 385, 378, 446, 359, 446, 379, 446,
812 : /* 110 */ 446, 301, 318, 446, 429, 428, 347, 351, 374, 348,
813 : /* 120 */ 313, 300, 361, 326, 309, 303, 304, 305, 446, 322,
814 : /* 130 */ 397, 302, 390, 361, 361, 361, 390, 353, 323, 446,
815 : /* 140 */ 323, 353, 327, 446, 323, 411, 392, 446, 446, 446,
816 : /* 150 */ 446, 446, 446, 446, 446, 446, 319, 446, 446, 446,
817 : /* 160 */ 446, 446, 446, 446, 335, 446, 320, 331, 349, 446,
818 : /* 170 */ 327, 446, 446, 446, 446, 446, 446, 446, 446, 446,
819 : /* 180 */ 446, 446, 446, 446, 332, 297, 287, 298, 382, 299,
820 : /* 190 */ 291, 366, 314, 368, 292, 290, 367, 381, 383, 369,
821 : /* 200 */ 293, 294, 439, 296, 437, 441, 295, 365, 432, 344,
822 : /* 210 */ 333, 419, 444, 445, 342, 442, 341, 363, 364, 329,
823 : /* 220 */ 443, 343, 435, 438, 316, 440, 434, 431, 433, 362,
824 : /* 230 */ 358, 328, 334, 336, 327, 389, 288, 289, 315, 337,
825 : /* 240 */ 338, 375, 356, 357, 360, 355, 339, 376, 387, 388,
826 : /* 250 */ 407, 408, 421, 404, 403, 412, 340, 393, 422, 423,
827 : /* 260 */ 372, 321, 352, 371, 310, 395, 308, 420, 418, 373,
828 : /* 270 */ 331, 424, 370, 325, 436, 330, 426, 425, 415, 416,
829 : /* 280 */ 417, 414, 413, 398, 399, 384,
830 : );
831 : /* The next thing included is series of defines which control
832 : ** various aspects of the generated parser.
833 : ** self::YYNOCODE is a number which corresponds
834 : ** to no legal terminal or nonterminal number. This
835 : ** number is used to fill in empty slots of the hash
836 : ** table.
837 : ** self::YYFALLBACK If defined, this indicates that one or more tokens
838 : ** have fall-back values which should be used if the
839 : ** original value of the token will not parse.
840 : ** self::YYSTACKDEPTH is the maximum depth of the parser's stack.
841 : ** self::YYNSTATE the combined number of states.
842 : ** self::YYNRULE the number of rules in the grammar
843 : ** self::YYERRORSYMBOL is the code number of the error symbol. If not
844 : ** defined, then do no error processing.
845 : */
846 : const YYNOCODE = 112;
847 : const YYSTACKDEPTH = 100;
848 : const YYNSTATE = 286;
849 : const YYNRULE = 160;
850 : const YYERRORSYMBOL = 70;
851 : const YYERRSYMDT = 'yy0';
852 : const YYFALLBACK = 1;
853 : /** The next table maps tokens into fallback tokens. If a construct
854 : * like the following:
855 : *
856 : * %fallback ID X Y Z.
857 : *
858 : * appears in the grammer, then ID becomes a fallback token for X, Y,
859 : * and Z. Whenever one of the tokens X, Y, or Z is input to the parser
860 : * but it does not parse, the type of the token is changed to ID and
861 : * the parse is retried before an error is thrown.
862 : */
863 : static public $yyFallback = array(
864 : 0, /* $ => nothing */
865 : 0, /* OTHER => nothing */
866 : 1, /* XML => OTHER */
867 : 1, /* PHP => OTHER */
868 : 1, /* SHORTTAGSTART => OTHER */
869 : 1, /* SHORTTAGEND => OTHER */
870 : 1, /* PHPSTART => OTHER */
871 : 1, /* PHPEND => OTHER */
872 : 1, /* COMMENTEND => OTHER */
873 : 1, /* COMMENTSTART => OTHER */
874 : 1, /* SINGLEQUOTE => OTHER */
875 : 1, /* LITERALSTART => OTHER */
876 : 1, /* LITERALEND => OTHER */
877 : 1, /* LDELIMTAG => OTHER */
878 : 1, /* RDELIMTAG => OTHER */
879 : 1, /* LDELSLASH => OTHER */
880 : 1, /* LDEL => OTHER */
881 : 1, /* RDEL => OTHER */
882 : 1, /* ISIN => OTHER */
883 : 1, /* AS => OTHER */
884 : 1, /* BOOLEAN => OTHER */
885 : 1, /* NULL => OTHER */
886 : 1, /* IDENTITY => OTHER */
887 : 1, /* NONEIDENTITY => OTHER */
888 : 1, /* EQUALS => OTHER */
889 : 1, /* NOTEQUALS => OTHER */
890 : 1, /* GREATEREQUAL => OTHER */
891 : 1, /* LESSEQUAL => OTHER */
892 : 1, /* GREATERTHAN => OTHER */
893 : 1, /* LESSTHAN => OTHER */
894 : 1, /* NOT => OTHER */
895 : 1, /* LAND => OTHER */
896 : 1, /* LOR => OTHER */
897 : 1, /* LXOR => OTHER */
898 : 1, /* ISODDBY => OTHER */
899 : 1, /* ISNOTODDBY => OTHER */
900 : 1, /* ISODD => OTHER */
901 : 1, /* ISNOTODD => OTHER */
902 : 1, /* ISEVENBY => OTHER */
903 : 1, /* ISNOTEVENBY => OTHER */
904 : 1, /* ISEVEN => OTHER */
905 : 1, /* ISNOTEVEN => OTHER */
906 : 1, /* ISDIVBY => OTHER */
907 : 1, /* ISNOTDIVBY => OTHER */
908 : 1, /* OPENP => OTHER */
909 : 1, /* CLOSEP => OTHER */
910 : 1, /* OPENB => OTHER */
911 : 1, /* CLOSEB => OTHER */
912 : 1, /* PTR => OTHER */
913 : 1, /* APTR => OTHER */
914 : 1, /* EQUAL => OTHER */
915 : 1, /* INTEGER => OTHER */
916 : 1, /* INCDEC => OTHER */
917 : 1, /* UNIMATH => OTHER */
918 : 1, /* MATH => OTHER */
919 : 1, /* DOLLAR => OTHER */
920 : 1, /* COLON => OTHER */
921 : 1, /* DOUBLECOLON => OTHER */
922 : 1, /* SEMICOLON => OTHER */
923 : 1, /* AT => OTHER */
924 : 1, /* HATCH => OTHER */
925 : 1, /* QUOTE => OTHER */
926 : 1, /* BACKTICK => OTHER */
927 : 1, /* VERT => OTHER */
928 : 1, /* DOT => OTHER */
929 : 1, /* COMMA => OTHER */
930 : 1, /* ANDSYM => OTHER */
931 : 1, /* ID => OTHER */
932 : 1, /* SPACE => OTHER */
933 : 1, /* INSTANCEOF => OTHER */
934 : );
935 : /**
936 : * Turn parser tracing on by giving a stream to which to write the trace
937 : * and a prompt to preface each trace message. Tracing is turned off
938 : * by making either argument NULL
939 : *
940 : * Inputs:
941 : *
942 : * - A stream resource to which trace output should be written.
943 : * If NULL, then tracing is turned off.
944 : * - A prefix string written at the beginning of every
945 : * line of trace output. If NULL, then tracing is
946 : * turned off.
947 : *
948 : * Outputs:
949 : *
950 : * - None.
951 : * @param resource
952 : * @param string
953 : */
954 : static function Trace($TraceFILE, $zTracePrompt)
955 : {
956 0 : if (!$TraceFILE) {
957 0 : $zTracePrompt = 0;
958 0 : } elseif (!$zTracePrompt) {
959 0 : $TraceFILE = 0;
960 0 : }
961 0 : self::$yyTraceFILE = $TraceFILE;
962 0 : self::$yyTracePrompt = $zTracePrompt;
963 0 : }
964 :
965 : /**
966 : * Output debug information to output (php://output stream)
967 : */
968 : static function PrintTrace()
969 : {
970 0 : self::$yyTraceFILE = fopen('php://output', 'w');
971 0 : self::$yyTracePrompt = '<br>';
972 0 : }
973 :
974 : /**
975 : * @var resource|0
976 : */
977 : static public $yyTraceFILE;
978 : /**
979 : * String to prepend to debug output
980 : * @var string|0
981 : */
982 : static public $yyTracePrompt;
983 : /**
984 : * @var int
985 : */
986 : public $yyidx; /* Index of top element in stack */
987 : /**
988 : * @var int
989 : */
990 : public $yyerrcnt; /* Shifts left before out of the error */
991 : /**
992 : * @var array
993 : */
994 : public $yystack = array(); /* The parser's stack */
995 :
996 : /**
997 : * For tracing shifts, the names of all terminals and nonterminals
998 : * are required. The following table supplies these names
999 : * @var array
1000 : */
1001 : public $yyTokenName = array(
1002 : '$', 'OTHER', 'XML', 'PHP',
1003 : 'SHORTTAGSTART', 'SHORTTAGEND', 'PHPSTART', 'PHPEND',
1004 : 'COMMENTEND', 'COMMENTSTART', 'SINGLEQUOTE', 'LITERALSTART',
1005 : 'LITERALEND', 'LDELIMTAG', 'RDELIMTAG', 'LDELSLASH',
1006 : 'LDEL', 'RDEL', 'ISIN', 'AS',
1007 : 'BOOLEAN', 'NULL', 'IDENTITY', 'NONEIDENTITY',
1008 : 'EQUALS', 'NOTEQUALS', 'GREATEREQUAL', 'LESSEQUAL',
1009 : 'GREATERTHAN', 'LESSTHAN', 'NOT', 'LAND',
1010 : 'LOR', 'LXOR', 'ISODDBY', 'ISNOTODDBY',
1011 : 'ISODD', 'ISNOTODD', 'ISEVENBY', 'ISNOTEVENBY',
1012 : 'ISEVEN', 'ISNOTEVEN', 'ISDIVBY', 'ISNOTDIVBY',
1013 : 'OPENP', 'CLOSEP', 'OPENB', 'CLOSEB',
1014 : 'PTR', 'APTR', 'EQUAL', 'INTEGER',
1015 : 'INCDEC', 'UNIMATH', 'MATH', 'DOLLAR',
1016 : 'COLON', 'DOUBLECOLON', 'SEMICOLON', 'AT',
1017 : 'HATCH', 'QUOTE', 'BACKTICK', 'VERT',
1018 : 'DOT', 'COMMA', 'ANDSYM', 'ID',
1019 : 'SPACE', 'INSTANCEOF', 'error', 'start',
1020 : 'template', 'template_element', 'smartytag', 'smartyclosetag',
1021 : 'text', 'variable', 'attributes', 'expr',
1022 : 'varindexed', 'modifier', 'modparameters', 'ifexprs',
1023 : 'statement', 'statements', 'varvar', 'foraction',
1024 : 'value', 'array', 'attribute', 'exprs',
1025 : 'math', 'function', 'doublequoted', 'method',
1026 : 'params', 'objectchain', 'arrayindex', 'object',
1027 : 'indexdef', 'varvarele', 'objectelement', 'modparameter',
1028 : 'ifexpr', 'ifcond', 'lop', 'arrayelements',
1029 : 'arrayelement', 'doublequotedcontent', 'textelement',
1030 : );
1031 :
1032 : /**
1033 : * For tracing reduce actions, the names of all rules are required.
1034 : * @var array
1035 : */
1036 : static public $yyRuleName = array(
1037 : /* 0 */ "start ::= template",
1038 : /* 1 */ "template ::= template_element",
1039 : /* 2 */ "template ::= template template_element",
1040 : /* 3 */ "template_element ::= LDEL smartytag RDEL",
1041 : /* 4 */ "template_element ::= LDELSLASH smartyclosetag RDEL",
1042 : /* 5 */ "template_element ::= COMMENTSTART text COMMENTEND",
1043 : /* 6 */ "template_element ::= LITERALSTART text LITERALEND",
1044 : /* 7 */ "template_element ::= LDELIMTAG",
1045 : /* 8 */ "template_element ::= RDELIMTAG",
1046 : /* 9 */ "template_element ::= PHP text SHORTTAGEND",
1047 : /* 10 */ "template_element ::= SHORTTAGSTART DOLLAR ID SHORTTAGEND",
1048 : /* 11 */ "template_element ::= XML",
1049 : /* 12 */ "template_element ::= SHORTTAGEND",
1050 : /* 13 */ "template_element ::= OTHER",
1051 : /* 14 */ "smartytag ::= variable attributes",
1052 : /* 15 */ "smartytag ::= expr attributes",
1053 : /* 16 */ "smartytag ::= varindexed EQUAL expr attributes",
1054 : /* 17 */ "smartytag ::= ID attributes",
1055 : /* 18 */ "smartytag ::= ID PTR ID attributes",
1056 : /* 19 */ "smartytag ::= ID modifier modparameters attributes",
1057 : /* 20 */ "smartytag ::= ID SPACE ifexprs",
1058 : /* 21 */ "smartytag ::= ID SPACE statement",
1059 : /* 22 */ "smartytag ::= ID SPACE statements SEMICOLON ifexprs SEMICOLON DOLLAR varvar foraction",
1060 : /* 23 */ "foraction ::= EQUAL expr",
1061 : /* 24 */ "foraction ::= INCDEC",
1062 : /* 25 */ "smartytag ::= ID SPACE value AS DOLLAR varvar",
1063 : /* 26 */ "smartytag ::= ID SPACE array AS DOLLAR varvar",
1064 : /* 27 */ "smartyclosetag ::= ID attributes",
1065 : /* 28 */ "smartyclosetag ::= ID PTR ID",
1066 : /* 29 */ "attributes ::= attributes attribute",
1067 : /* 30 */ "attributes ::= attribute",
1068 : /* 31 */ "attributes ::=",
1069 : /* 32 */ "attribute ::= SPACE ID EQUAL expr",
1070 : /* 33 */ "attribute ::= SPACE ID",
1071 : /* 34 */ "statements ::= statement",
1072 : /* 35 */ "statements ::= statements COMMA statement",
1073 : /* 36 */ "statement ::= DOLLAR varvar EQUAL expr",
1074 : /* 37 */ "expr ::= ID",
1075 : /* 38 */ "expr ::= exprs",
1076 : /* 39 */ "expr ::= DOLLAR ID COLON ID",
1077 : /* 40 */ "expr ::= expr modifier modparameters",
1078 : /* 41 */ "exprs ::= value",
1079 : /* 42 */ "exprs ::= UNIMATH value",
1080 : /* 43 */ "exprs ::= exprs math value",
1081 : /* 44 */ "exprs ::= exprs ANDSYM value",
1082 : /* 45 */ "exprs ::= array",
1083 : /* 46 */ "math ::= UNIMATH",
1084 : /* 47 */ "math ::= MATH",
1085 : /* 48 */ "value ::= variable",
1086 : /* 49 */ "value ::= INTEGER",
1087 : /* 50 */ "value ::= INTEGER DOT INTEGER",
1088 : /* 51 */ "value ::= BOOLEAN",
1089 : /* 52 */ "value ::= NULL",
1090 : /* 53 */ "value ::= function",
1091 : /* 54 */ "value ::= OPENP expr CLOSEP",
1092 : /* 55 */ "value ::= SINGLEQUOTE text SINGLEQUOTE",
1093 : /* 56 */ "value ::= SINGLEQUOTE SINGLEQUOTE",
1094 : /* 57 */ "value ::= QUOTE doublequoted QUOTE",
1095 : /* 58 */ "value ::= QUOTE QUOTE",
1096 : /* 59 */ "value ::= ID DOUBLECOLON method",
1097 : /* 60 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
1098 : /* 61 */ "value ::= ID DOUBLECOLON method objectchain",
1099 : /* 62 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
1100 : /* 63 */ "value ::= ID DOUBLECOLON ID",
1101 : /* 64 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
1102 : /* 65 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
1103 : /* 66 */ "value ::= LDEL smartytag RDEL",
1104 : /* 67 */ "variable ::= DOLLAR ID",
1105 : /* 68 */ "variable ::= varindexed",
1106 : /* 69 */ "variable ::= DOLLAR varvar AT ID",
1107 : /* 70 */ "variable ::= object",
1108 : /* 71 */ "variable ::= HATCH ID HATCH",
1109 : /* 72 */ "variable ::= HATCH variable HATCH",
1110 : /* 73 */ "varindexed ::= DOLLAR varvar arrayindex",
1111 : /* 74 */ "arrayindex ::= arrayindex indexdef",
1112 : /* 75 */ "arrayindex ::=",
1113 : /* 76 */ "indexdef ::= DOT ID",
1114 : /* 77 */ "indexdef ::= DOT INTEGER",
1115 : /* 78 */ "indexdef ::= DOT variable",
1116 : /* 79 */ "indexdef ::= DOT LDEL exprs RDEL",
1117 : /* 80 */ "indexdef ::= OPENB ID CLOSEB",
1118 : /* 81 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
1119 : /* 82 */ "indexdef ::= OPENB exprs CLOSEB",
1120 : /* 83 */ "indexdef ::= OPENB CLOSEB",
1121 : /* 84 */ "varvar ::= varvarele",
1122 : /* 85 */ "varvar ::= varvar varvarele",
1123 : /* 86 */ "varvarele ::= ID",
1124 : /* 87 */ "varvarele ::= LDEL expr RDEL",
1125 : /* 88 */ "object ::= varindexed objectchain",
1126 : /* 89 */ "objectchain ::= objectelement",
1127 : /* 90 */ "objectchain ::= objectchain objectelement",
1128 : /* 91 */ "objectelement ::= PTR ID arrayindex",
1129 : /* 92 */ "objectelement ::= PTR variable arrayindex",
1130 : /* 93 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
1131 : /* 94 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
1132 : /* 95 */ "objectelement ::= PTR method",
1133 : /* 96 */ "function ::= ID OPENP params CLOSEP",
1134 : /* 97 */ "method ::= ID OPENP params CLOSEP",
1135 : /* 98 */ "params ::= expr COMMA params",
1136 : /* 99 */ "params ::= expr",
1137 : /* 100 */ "params ::=",
1138 : /* 101 */ "modifier ::= VERT AT ID",
1139 : /* 102 */ "modifier ::= VERT ID",
1140 : /* 103 */ "modparameters ::= modparameters modparameter",
1141 : /* 104 */ "modparameters ::=",
1142 : /* 105 */ "modparameter ::= COLON exprs",
1143 : /* 106 */ "modparameter ::= COLON ID",
1144 : /* 107 */ "ifexprs ::= ifexpr",
1145 : /* 108 */ "ifexprs ::= NOT ifexprs",
1146 : /* 109 */ "ifexprs ::= OPENP ifexprs CLOSEP",
1147 : /* 110 */ "ifexpr ::= expr",
1148 : /* 111 */ "ifexpr ::= expr ifcond expr",
1149 : /* 112 */ "ifexpr ::= expr ISIN array",
1150 : /* 113 */ "ifexpr ::= expr ISIN value",
1151 : /* 114 */ "ifexpr ::= ifexprs lop ifexprs",
1152 : /* 115 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
1153 : /* 116 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
1154 : /* 117 */ "ifexpr ::= ifexprs ISEVEN",
1155 : /* 118 */ "ifexpr ::= ifexprs ISNOTEVEN",
1156 : /* 119 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
1157 : /* 120 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
1158 : /* 121 */ "ifexpr ::= ifexprs ISODD",
1159 : /* 122 */ "ifexpr ::= ifexprs ISNOTODD",
1160 : /* 123 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
1161 : /* 124 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
1162 : /* 125 */ "ifexpr ::= value INSTANCEOF ID",
1163 : /* 126 */ "ifexpr ::= value INSTANCEOF value",
1164 : /* 127 */ "ifcond ::= EQUALS",
1165 : /* 128 */ "ifcond ::= NOTEQUALS",
1166 : /* 129 */ "ifcond ::= GREATERTHAN",
1167 : /* 130 */ "ifcond ::= LESSTHAN",
1168 : /* 131 */ "ifcond ::= GREATEREQUAL",
1169 : /* 132 */ "ifcond ::= LESSEQUAL",
1170 : /* 133 */ "ifcond ::= IDENTITY",
1171 : /* 134 */ "ifcond ::= NONEIDENTITY",
1172 : /* 135 */ "lop ::= LAND",
1173 : /* 136 */ "lop ::= LOR",
1174 : /* 137 */ "lop ::= LXOR",
1175 : /* 138 */ "array ::= OPENB arrayelements CLOSEB",
1176 : /* 139 */ "arrayelements ::= arrayelement",
1177 : /* 140 */ "arrayelements ::= arrayelements COMMA arrayelement",
1178 : /* 141 */ "arrayelements ::=",
1179 : /* 142 */ "arrayelement ::= expr APTR expr",
1180 : /* 143 */ "arrayelement ::= ID APTR expr",
1181 : /* 144 */ "arrayelement ::= expr",
1182 : /* 145 */ "doublequoted ::= doublequoted doublequotedcontent",
1183 : /* 146 */ "doublequoted ::= doublequotedcontent",
1184 : /* 147 */ "doublequotedcontent ::= BACKTICK ID BACKTICK",
1185 : /* 148 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
1186 : /* 149 */ "doublequotedcontent ::= DOLLAR ID",
1187 : /* 150 */ "doublequotedcontent ::= LDEL expr RDEL",
1188 : /* 151 */ "doublequotedcontent ::= LDEL smartytag RDEL",
1189 : /* 152 */ "doublequotedcontent ::= DOLLAR OTHER",
1190 : /* 153 */ "doublequotedcontent ::= LDEL OTHER",
1191 : /* 154 */ "doublequotedcontent ::= BACKTICK OTHER",
1192 : /* 155 */ "doublequotedcontent ::= OTHER",
1193 : /* 156 */ "text ::= text textelement",
1194 : /* 157 */ "text ::= textelement",
1195 : /* 158 */ "textelement ::= OTHER",
1196 : /* 159 */ "textelement ::= LDEL",
1197 : );
1198 :
1199 : /**
1200 : * This function returns the symbolic name associated with a token
1201 : * value.
1202 : * @param int
1203 : * @return string
1204 : */
1205 : function tokenName($tokenType)
1206 : {
1207 0 : if ($tokenType === 0) {
1208 0 : return 'End of Input';
1209 : }
1210 0 : if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1211 0 : return $this->yyTokenName[$tokenType];
1212 : } else {
1213 0 : return "Unknown";
1214 : }
1215 : }
1216 :
1217 : /**
1218 : * The following function deletes the value associated with a
1219 : * symbol. The symbol can be either a terminal or nonterminal.
1220 : * @param int the symbol code
1221 : * @param mixed the symbol's value
1222 : */
1223 : static function yy_destructor($yymajor, $yypminor)
1224 : {
1225 : switch ($yymajor) {
1226 : /* Here is inserted the actions which take place when a
1227 : ** terminal or non-terminal is destroyed. This can happen
1228 : ** when the symbol is popped from the stack during a
1229 : ** reduce or during error processing or when a parser is
1230 : ** being destroyed before it is finished parsing.
1231 : **
1232 : ** Note: during a reduce, the only symbols destroyed are those
1233 : ** which appear on the RHS of the rule, but which are not used
1234 : ** inside the C code.
1235 : */
1236 332 : default: break; /* If no destructor action specified: do nothing */
1237 332 : }
1238 332 : }
1239 :
1240 : /**
1241 : * Pop the parser's stack once.
1242 : *
1243 : * If there is a destructor routine associated with the token which
1244 : * is popped from the stack, then call it.
1245 : *
1246 : * Return the major token number for the symbol popped.
1247 : * @param TP_yyParser
1248 : * @return int
1249 : */
1250 : function yy_pop_parser_stack()
1251 : {
1252 332 : if (!count($this->yystack)) {
1253 0 : return;
1254 : }
1255 332 : $yytos = array_pop($this->yystack);
1256 332 : if (self::$yyTraceFILE && $this->yyidx >= 0) {
1257 0 : fwrite(self::$yyTraceFILE,
1258 0 : self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
1259 0 : "\n");
1260 0 : }
1261 332 : $yymajor = $yytos->major;
1262 332 : self::yy_destructor($yymajor, $yytos->minor);
1263 332 : $this->yyidx--;
1264 332 : return $yymajor;
1265 : }
1266 :
1267 : /**
1268 : * Deallocate and destroy a parser. Destructors are all called for
1269 : * all stack elements before shutting the parser down.
1270 : */
1271 : function __destruct()
1272 : {
1273 335 : while ($this->yyidx >= 0) {
1274 4 : $this->yy_pop_parser_stack();
1275 4 : }
1276 335 : if (is_resource(self::$yyTraceFILE)) {
1277 0 : fclose(self::$yyTraceFILE);
1278 0 : }
1279 335 : }
1280 :
1281 : /**
1282 : * Based on the current state and parser stack, get a list of all
1283 : * possible lookahead tokens
1284 : * @param int
1285 : * @return array
1286 : */
1287 : function yy_get_expected_tokens($token)
1288 : {
1289 1 : $state = $this->yystack[$this->yyidx]->stateno;
1290 1 : $expected = self::$yyExpectedTokens[$state];
1291 1 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1292 0 : return $expected;
1293 : }
1294 1 : $stack = $this->yystack;
1295 1 : $yyidx = $this->yyidx;
1296 : do {
1297 1 : $yyact = $this->yy_find_shift_action($token);
1298 1 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1299 : // reduce action
1300 0 : $done = 0;
1301 : do {
1302 0 : if ($done++ == 100) {
1303 0 : $this->yyidx = $yyidx;
1304 0 : $this->yystack = $stack;
1305 : // too much recursion prevents proper detection
1306 : // so give up
1307 0 : return array_unique($expected);
1308 : }
1309 0 : $yyruleno = $yyact - self::YYNSTATE;
1310 0 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1311 0 : $nextstate = $this->yy_find_reduce_action(
1312 0 : $this->yystack[$this->yyidx]->stateno,
1313 0 : self::$yyRuleInfo[$yyruleno]['lhs']);
1314 0 : if (isset(self::$yyExpectedTokens[$nextstate])) {
1315 0 : $expected += self::$yyExpectedTokens[$nextstate];
1316 0 : if (in_array($token,
1317 0 : self::$yyExpectedTokens[$nextstate], true)) {
1318 0 : $this->yyidx = $yyidx;
1319 0 : $this->yystack = $stack;
1320 0 : return array_unique($expected);
1321 : }
1322 0 : }
1323 0 : if ($nextstate < self::YYNSTATE) {
1324 : // we need to shift a non-terminal
1325 0 : $this->yyidx++;
1326 0 : $x = new TP_yyStackEntry;
1327 0 : $x->stateno = $nextstate;
1328 0 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1329 0 : $this->yystack[$this->yyidx] = $x;
1330 0 : continue 2;
1331 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1332 0 : $this->yyidx = $yyidx;
1333 0 : $this->yystack = $stack;
1334 : // the last token was just ignored, we can't accept
1335 : // by ignoring input, this is in essence ignoring a
1336 : // syntax error!
1337 0 : return array_unique($expected);
1338 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1339 0 : $this->yyidx = $yyidx;
1340 0 : $this->yystack = $stack;
1341 : // input accepted, but not shifted (I guess)
1342 0 : return $expected;
1343 : } else {
1344 0 : $yyact = $nextstate;
1345 : }
1346 0 : } while (true);
1347 0 : }
1348 1 : break;
1349 0 : } while (true);
1350 1 : return array_unique($expected);
1351 : }
1352 :
1353 : /**
1354 : * Based on the parser state and current parser stack, determine whether
1355 : * the lookahead token is possible.
1356 : *
1357 : * The parser will convert the token value to an error token if not. This
1358 : * catches some unusual edge cases where the parser would fail.
1359 : * @param int
1360 : * @return bool
1361 : */
1362 : function yy_is_expected_token($token)
1363 : {
1364 345 : if ($token === 0) {
1365 331 : return true; // 0 is not part of this
1366 : }
1367 345 : $state = $this->yystack[$this->yyidx]->stateno;
1368 345 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1369 333 : return true;
1370 : }
1371 344 : $stack = $this->yystack;
1372 344 : $yyidx = $this->yyidx;
1373 : do {
1374 344 : $yyact = $this->yy_find_shift_action($token);
1375 344 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1376 : // reduce action
1377 343 : $done = 0;
1378 : do {
1379 343 : if ($done++ == 100) {
1380 0 : $this->yyidx = $yyidx;
1381 0 : $this->yystack = $stack;
1382 : // too much recursion prevents proper detection
1383 : // so give up
1384 0 : return true;
1385 : }
1386 343 : $yyruleno = $yyact - self::YYNSTATE;
1387 343 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1388 343 : $nextstate = $this->yy_find_reduce_action(
1389 343 : $this->yystack[$this->yyidx]->stateno,
1390 343 : self::$yyRuleInfo[$yyruleno]['lhs']);
1391 343 : if (isset(self::$yyExpectedTokens[$nextstate]) &&
1392 343 : in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
1393 331 : $this->yyidx = $yyidx;
1394 331 : $this->yystack = $stack;
1395 331 : return true;
1396 : }
1397 332 : if ($nextstate < self::YYNSTATE) {
1398 : // we need to shift a non-terminal
1399 332 : $this->yyidx++;
1400 332 : $x = new TP_yyStackEntry;
1401 332 : $x->stateno = $nextstate;
1402 332 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1403 332 : $this->yystack[$this->yyidx] = $x;
1404 332 : continue 2;
1405 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1406 0 : $this->yyidx = $yyidx;
1407 0 : $this->yystack = $stack;
1408 0 : if (!$token) {
1409 : // end of input: this is valid
1410 0 : return true;
1411 : }
1412 : // the last token was just ignored, we can't accept
1413 : // by ignoring input, this is in essence ignoring a
1414 : // syntax error!
1415 0 : return false;
1416 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1417 0 : $this->yyidx = $yyidx;
1418 0 : $this->yystack = $stack;
1419 : // input accepted, but not shifted (I guess)
1420 0 : return true;
1421 : } else {
1422 0 : $yyact = $nextstate;
1423 : }
1424 0 : } while (true);
1425 0 : }
1426 253 : break;
1427 0 : } while (true);
1428 253 : $this->yyidx = $yyidx;
1429 253 : $this->yystack = $stack;
1430 253 : return true;
1431 : }
1432 :
1433 : /**
1434 : * Find the appropriate action for a parser given the terminal
1435 : * look-ahead token iLookAhead.
1436 : *
1437 : * If the look-ahead token is YYNOCODE, then check to see if the action is
1438 : * independent of the look-ahead. If it is, return the action, otherwise
1439 : * return YY_NO_ACTION.
1440 : * @param int The look-ahead token
1441 : */
1442 : function yy_find_shift_action($iLookAhead)
1443 : {
1444 345 : $stateno = $this->yystack[$this->yyidx]->stateno;
1445 :
1446 : /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
1447 345 : if (!isset(self::$yy_shift_ofst[$stateno])) {
1448 : // no shift actions
1449 341 : return self::$yy_default[$stateno];
1450 : }
1451 345 : $i = self::$yy_shift_ofst[$stateno];
1452 345 : if ($i === self::YY_SHIFT_USE_DFLT) {
1453 16 : return self::$yy_default[$stateno];
1454 : }
1455 345 : if ($iLookAhead == self::YYNOCODE) {
1456 0 : return self::YY_NO_ACTION;
1457 : }
1458 345 : $i += $iLookAhead;
1459 345 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1460 345 : self::$yy_lookahead[$i] != $iLookAhead) {
1461 345 : if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1462 345 : && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
1463 344 : if (self::$yyTraceFILE) {
1464 0 : fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
1465 0 : $this->yyTokenName[$iLookAhead] . " => " .
1466 0 : $this->yyTokenName[$iFallback] . "\n");
1467 0 : }
1468 344 : return $this->yy_find_shift_action($iFallback);
1469 : }
1470 345 : return self::$yy_default[$stateno];
1471 : } else {
1472 345 : return self::$yy_action[$i];
1473 : }
1474 : }
1475 :
1476 : /**
1477 : * Find the appropriate action for a parser given the non-terminal
1478 : * look-ahead token $iLookAhead.
1479 : *
1480 : * If the look-ahead token is self::YYNOCODE, then check to see if the action is
1481 : * independent of the look-ahead. If it is, return the action, otherwise
1482 : * return self::YY_NO_ACTION.
1483 : * @param int Current state number
1484 : * @param int The look-ahead token
1485 : */
1486 : function yy_find_reduce_action($stateno, $iLookAhead)
1487 : {
1488 : /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1489 :
1490 344 : if (!isset(self::$yy_reduce_ofst[$stateno])) {
1491 0 : return self::$yy_default[$stateno];
1492 : }
1493 344 : $i = self::$yy_reduce_ofst[$stateno];
1494 344 : if ($i == self::YY_REDUCE_USE_DFLT) {
1495 0 : return self::$yy_default[$stateno];
1496 : }
1497 344 : if ($iLookAhead == self::YYNOCODE) {
1498 0 : return self::YY_NO_ACTION;
1499 : }
1500 344 : $i += $iLookAhead;
1501 344 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1502 344 : self::$yy_lookahead[$i] != $iLookAhead) {
1503 0 : return self::$yy_default[$stateno];
1504 : } else {
1505 344 : return self::$yy_action[$i];
1506 : }
1507 : }
1508 :
1509 : /**
1510 : * Perform a shift action.
1511 : * @param int The new state to shift in
1512 : * @param int The major token to shift in
1513 : * @param mixed the minor token to shift in
1514 : */
1515 : function yy_shift($yyNewState, $yyMajor, $yypMinor)
1516 : {
1517 345 : $this->yyidx++;
1518 345 : if ($this->yyidx >= self::YYSTACKDEPTH) {
1519 0 : $this->yyidx--;
1520 0 : if (self::$yyTraceFILE) {
1521 0 : fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
1522 0 : }
1523 0 : while ($this->yyidx >= 0) {
1524 0 : $this->yy_pop_parser_stack();
1525 0 : }
1526 : /* Here code is inserted which will execute if the parser
1527 : ** stack ever overflows */
1528 0 : return;
1529 : }
1530 345 : $yytos = new TP_yyStackEntry;
1531 345 : $yytos->stateno = $yyNewState;
1532 345 : $yytos->major = $yyMajor;
1533 345 : $yytos->minor = $yypMinor;
1534 345 : array_push($this->yystack, $yytos);
1535 345 : if (self::$yyTraceFILE && $this->yyidx > 0) {
1536 0 : fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
1537 0 : $yyNewState);
1538 0 : fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
1539 0 : for($i = 1; $i <= $this->yyidx; $i++) {
1540 0 : fprintf(self::$yyTraceFILE, " %s",
1541 0 : $this->yyTokenName[$this->yystack[$i]->major]);
1542 0 : }
1543 0 : fwrite(self::$yyTraceFILE,"\n");
1544 0 : }
1545 345 : }
1546 :
1547 : /**
1548 : * The following table contains information about every rule that
1549 : * is used during the reduce.
1550 : *
1551 : * <pre>
1552 : * array(
1553 : * array(
1554 : * int $lhs; Symbol on the left-hand side of the rule
1555 : * int $nrhs; Number of right-hand side symbols in the rule
1556 : * ),...
1557 : * );
1558 : * </pre>
1559 : */
1560 : static public $yyRuleInfo = array(
1561 : array( 'lhs' => 71, 'rhs' => 1 ),
1562 : array( 'lhs' => 72, 'rhs' => 1 ),
1563 : array( 'lhs' => 72, 'rhs' => 2 ),
1564 : array( 'lhs' => 73, 'rhs' => 3 ),
1565 : array( 'lhs' => 73, 'rhs' => 3 ),
1566 : array( 'lhs' => 73, 'rhs' => 3 ),
1567 : array( 'lhs' => 73, 'rhs' => 3 ),
1568 : array( 'lhs' => 73, 'rhs' => 1 ),
1569 : array( 'lhs' => 73, 'rhs' => 1 ),
1570 : array( 'lhs' => 73, 'rhs' => 3 ),
1571 : array( 'lhs' => 73, 'rhs' => 4 ),
1572 : array( 'lhs' => 73, 'rhs' => 1 ),
1573 : array( 'lhs' => 73, 'rhs' => 1 ),
1574 : array( 'lhs' => 73, 'rhs' => 1 ),
1575 : array( 'lhs' => 74, 'rhs' => 2 ),
1576 : array( 'lhs' => 74, 'rhs' => 2 ),
1577 : array( 'lhs' => 74, 'rhs' => 4 ),
1578 : array( 'lhs' => 74, 'rhs' => 2 ),
1579 : array( 'lhs' => 74, 'rhs' => 4 ),
1580 : array( 'lhs' => 74, 'rhs' => 4 ),
1581 : array( 'lhs' => 74, 'rhs' => 3 ),
1582 : array( 'lhs' => 74, 'rhs' => 3 ),
1583 : array( 'lhs' => 74, 'rhs' => 9 ),
1584 : array( 'lhs' => 87, 'rhs' => 2 ),
1585 : array( 'lhs' => 87, 'rhs' => 1 ),
1586 : array( 'lhs' => 74, 'rhs' => 6 ),
1587 : array( 'lhs' => 74, 'rhs' => 6 ),
1588 : array( 'lhs' => 75, 'rhs' => 2 ),
1589 : array( 'lhs' => 75, 'rhs' => 3 ),
1590 : array( 'lhs' => 78, 'rhs' => 2 ),
1591 : array( 'lhs' => 78, 'rhs' => 1 ),
1592 : array( 'lhs' => 78, 'rhs' => 0 ),
1593 : array( 'lhs' => 90, 'rhs' => 4 ),
1594 : array( 'lhs' => 90, 'rhs' => 2 ),
1595 : array( 'lhs' => 85, 'rhs' => 1 ),
1596 : array( 'lhs' => 85, 'rhs' => 3 ),
1597 : array( 'lhs' => 84, 'rhs' => 4 ),
1598 : array( 'lhs' => 79, 'rhs' => 1 ),
1599 : array( 'lhs' => 79, 'rhs' => 1 ),
1600 : array( 'lhs' => 79, 'rhs' => 4 ),
1601 : array( 'lhs' => 79, 'rhs' => 3 ),
1602 : array( 'lhs' => 91, 'rhs' => 1 ),
1603 : array( 'lhs' => 91, 'rhs' => 2 ),
1604 : array( 'lhs' => 91, 'rhs' => 3 ),
1605 : array( 'lhs' => 91, 'rhs' => 3 ),
1606 : array( 'lhs' => 91, 'rhs' => 1 ),
1607 : array( 'lhs' => 92, 'rhs' => 1 ),
1608 : array( 'lhs' => 92, 'rhs' => 1 ),
1609 : array( 'lhs' => 88, 'rhs' => 1 ),
1610 : array( 'lhs' => 88, 'rhs' => 1 ),
1611 : array( 'lhs' => 88, 'rhs' => 3 ),
1612 : array( 'lhs' => 88, 'rhs' => 1 ),
1613 : array( 'lhs' => 88, 'rhs' => 1 ),
1614 : array( 'lhs' => 88, 'rhs' => 1 ),
1615 : array( 'lhs' => 88, 'rhs' => 3 ),
1616 : array( 'lhs' => 88, 'rhs' => 3 ),
1617 : array( 'lhs' => 88, 'rhs' => 2 ),
1618 : array( 'lhs' => 88, 'rhs' => 3 ),
1619 : array( 'lhs' => 88, 'rhs' => 2 ),
1620 : array( 'lhs' => 88, 'rhs' => 3 ),
1621 : array( 'lhs' => 88, 'rhs' => 7 ),
1622 : array( 'lhs' => 88, 'rhs' => 4 ),
1623 : array( 'lhs' => 88, 'rhs' => 8 ),
1624 : array( 'lhs' => 88, 'rhs' => 3 ),
1625 : array( 'lhs' => 88, 'rhs' => 5 ),
1626 : array( 'lhs' => 88, 'rhs' => 6 ),
1627 : array( 'lhs' => 88, 'rhs' => 3 ),
1628 : array( 'lhs' => 77, 'rhs' => 2 ),
1629 : array( 'lhs' => 77, 'rhs' => 1 ),
1630 : array( 'lhs' => 77, 'rhs' => 4 ),
1631 : array( 'lhs' => 77, 'rhs' => 1 ),
1632 : array( 'lhs' => 77, 'rhs' => 3 ),
1633 : array( 'lhs' => 77, 'rhs' => 3 ),
1634 : array( 'lhs' => 80, 'rhs' => 3 ),
1635 : array( 'lhs' => 98, 'rhs' => 2 ),
1636 : array( 'lhs' => 98, 'rhs' => 0 ),
1637 : array( 'lhs' => 100, 'rhs' => 2 ),
1638 : array( 'lhs' => 100, 'rhs' => 2 ),
1639 : array( 'lhs' => 100, 'rhs' => 2 ),
1640 : array( 'lhs' => 100, 'rhs' => 4 ),
1641 : array( 'lhs' => 100, 'rhs' => 3 ),
1642 : array( 'lhs' => 100, 'rhs' => 5 ),
1643 : array( 'lhs' => 100, 'rhs' => 3 ),
1644 : array( 'lhs' => 100, 'rhs' => 2 ),
1645 : array( 'lhs' => 86, 'rhs' => 1 ),
1646 : array( 'lhs' => 86, 'rhs' => 2 ),
1647 : array( 'lhs' => 101, 'rhs' => 1 ),
1648 : array( 'lhs' => 101, 'rhs' => 3 ),
1649 : array( 'lhs' => 99, 'rhs' => 2 ),
1650 : array( 'lhs' => 97, 'rhs' => 1 ),
1651 : array( 'lhs' => 97, 'rhs' => 2 ),
1652 : array( 'lhs' => 102, 'rhs' => 3 ),
1653 : array( 'lhs' => 102, 'rhs' => 3 ),
1654 : array( 'lhs' => 102, 'rhs' => 5 ),
1655 : array( 'lhs' => 102, 'rhs' => 6 ),
1656 : array( 'lhs' => 102, 'rhs' => 2 ),
1657 : array( 'lhs' => 93, 'rhs' => 4 ),
1658 : array( 'lhs' => 95, 'rhs' => 4 ),
1659 : array( 'lhs' => 96, 'rhs' => 3 ),
1660 : array( 'lhs' => 96, 'rhs' => 1 ),
1661 : array( 'lhs' => 96, 'rhs' => 0 ),
1662 : array( 'lhs' => 81, 'rhs' => 3 ),
1663 : array( 'lhs' => 81, 'rhs' => 2 ),
1664 : array( 'lhs' => 82, 'rhs' => 2 ),
1665 : array( 'lhs' => 82, 'rhs' => 0 ),
1666 : array( 'lhs' => 103, 'rhs' => 2 ),
1667 : array( 'lhs' => 103, 'rhs' => 2 ),
1668 : array( 'lhs' => 83, 'rhs' => 1 ),
1669 : array( 'lhs' => 83, 'rhs' => 2 ),
1670 : array( 'lhs' => 83, 'rhs' => 3 ),
1671 : array( 'lhs' => 104, 'rhs' => 1 ),
1672 : array( 'lhs' => 104, 'rhs' => 3 ),
1673 : array( 'lhs' => 104, 'rhs' => 3 ),
1674 : array( 'lhs' => 104, 'rhs' => 3 ),
1675 : array( 'lhs' => 104, 'rhs' => 3 ),
1676 : array( 'lhs' => 104, 'rhs' => 3 ),
1677 : array( 'lhs' => 104, 'rhs' => 3 ),
1678 : array( 'lhs' => 104, 'rhs' => 2 ),
1679 : array( 'lhs' => 104, 'rhs' => 2 ),
1680 : array( 'lhs' => 104, 'rhs' => 3 ),
1681 : array( 'lhs' => 104, 'rhs' => 3 ),
1682 : array( 'lhs' => 104, 'rhs' => 2 ),
1683 : array( 'lhs' => 104, 'rhs' => 2 ),
1684 : array( 'lhs' => 104, 'rhs' => 3 ),
1685 : array( 'lhs' => 104, 'rhs' => 3 ),
1686 : array( 'lhs' => 104, 'rhs' => 3 ),
1687 : array( 'lhs' => 104, 'rhs' => 3 ),
1688 : array( 'lhs' => 105, 'rhs' => 1 ),
1689 : array( 'lhs' => 105, 'rhs' => 1 ),
1690 : array( 'lhs' => 105, 'rhs' => 1 ),
1691 : array( 'lhs' => 105, 'rhs' => 1 ),
1692 : array( 'lhs' => 105, 'rhs' => 1 ),
1693 : array( 'lhs' => 105, 'rhs' => 1 ),
1694 : array( 'lhs' => 105, 'rhs' => 1 ),
1695 : array( 'lhs' => 105, 'rhs' => 1 ),
1696 : array( 'lhs' => 106, 'rhs' => 1 ),
1697 : array( 'lhs' => 106, 'rhs' => 1 ),
1698 : array( 'lhs' => 106, 'rhs' => 1 ),
1699 : array( 'lhs' => 89, 'rhs' => 3 ),
1700 : array( 'lhs' => 107, 'rhs' => 1 ),
1701 : array( 'lhs' => 107, 'rhs' => 3 ),
1702 : array( 'lhs' => 107, 'rhs' => 0 ),
1703 : array( 'lhs' => 108, 'rhs' => 3 ),
1704 : array( 'lhs' => 108, 'rhs' => 3 ),
1705 : array( 'lhs' => 108, 'rhs' => 1 ),
1706 : array( 'lhs' => 94, 'rhs' => 2 ),
1707 : array( 'lhs' => 94, 'rhs' => 1 ),
1708 : array( 'lhs' => 109, 'rhs' => 3 ),
1709 : array( 'lhs' => 109, 'rhs' => 3 ),
1710 : array( 'lhs' => 109, 'rhs' => 2 ),
1711 : array( 'lhs' => 109, 'rhs' => 3 ),
1712 : array( 'lhs' => 109, 'rhs' => 3 ),
1713 : array( 'lhs' => 109, 'rhs' => 2 ),
1714 : array( 'lhs' => 109, 'rhs' => 2 ),
1715 : array( 'lhs' => 109, 'rhs' => 2 ),
1716 : array( 'lhs' => 109, 'rhs' => 1 ),
1717 : array( 'lhs' => 76, 'rhs' => 2 ),
1718 : array( 'lhs' => 76, 'rhs' => 1 ),
1719 : array( 'lhs' => 110, 'rhs' => 1 ),
1720 : array( 'lhs' => 110, 'rhs' => 1 ),
1721 : );
1722 :
1723 : /**
1724 : * The following table contains a mapping of reduce action to method name
1725 : * that handles the reduction.
1726 : *
1727 : * If a rule is not set, it has no handler.
1728 : */
1729 : static public $yyReduceMap = array(
1730 : 0 => 0,
1731 : 41 => 0,
1732 : 48 => 0,
1733 : 49 => 0,
1734 : 51 => 0,
1735 : 52 => 0,
1736 : 53 => 0,
1737 : 70 => 0,
1738 : 139 => 0,
1739 : 1 => 1,
1740 : 38 => 1,
1741 : 45 => 1,
1742 : 46 => 1,
1743 : 47 => 1,
1744 : 84 => 1,
1745 : 107 => 1,
1746 : 146 => 1,
1747 : 155 => 1,
1748 : 157 => 1,
1749 : 158 => 1,
1750 : 159 => 1,
1751 : 2 => 2,
1752 : 74 => 2,
1753 : 145 => 2,
1754 : 153 => 2,
1755 : 156 => 2,
1756 : 3 => 3,
1757 : 4 => 3,
1758 : 5 => 5,
1759 : 6 => 6,
1760 : 7 => 7,
1761 : 8 => 8,
1762 : 9 => 9,
1763 : 10 => 10,
1764 : 11 => 11,
1765 : 12 => 12,
1766 : 13 => 13,
1767 : 14 => 14,
1768 : 15 => 14,
1769 : 16 => 16,
1770 : 17 => 17,
1771 : 18 => 18,
1772 : 19 => 19,
1773 : 20 => 20,
1774 : 21 => 21,
1775 : 22 => 22,
1776 : 23 => 23,
1777 : 24 => 24,
1778 : 30 => 24,
1779 : 99 => 24,
1780 : 144 => 24,
1781 : 25 => 25,
1782 : 26 => 26,
1783 : 27 => 27,
1784 : 28 => 28,
1785 : 29 => 29,
1786 : 31 => 31,
1787 : 32 => 32,
1788 : 33 => 33,
1789 : 34 => 34,
1790 : 35 => 35,
1791 : 36 => 36,
1792 : 37 => 37,
1793 : 39 => 39,
1794 : 40 => 40,
1795 : 42 => 42,
1796 : 43 => 43,
1797 : 44 => 44,
1798 : 50 => 50,
1799 : 54 => 54,
1800 : 55 => 55,
1801 : 56 => 56,
1802 : 58 => 56,
1803 : 57 => 57,
1804 : 59 => 59,
1805 : 60 => 60,
1806 : 61 => 61,
1807 : 62 => 62,
1808 : 63 => 63,
1809 : 64 => 64,
1810 : 65 => 65,
1811 : 66 => 66,
1812 : 67 => 67,
1813 : 68 => 68,
1814 : 69 => 69,
1815 : 71 => 71,
1816 : 72 => 72,
1817 : 73 => 73,
1818 : 75 => 75,
1819 : 104 => 75,
1820 : 76 => 76,
1821 : 77 => 77,
1822 : 78 => 78,
1823 : 79 => 79,
1824 : 82 => 79,
1825 : 80 => 80,
1826 : 81 => 81,
1827 : 83 => 83,
1828 : 85 => 85,
1829 : 86 => 86,
1830 : 87 => 87,
1831 : 109 => 87,
1832 : 88 => 88,
1833 : 89 => 89,
1834 : 90 => 90,
1835 : 91 => 91,
1836 : 92 => 92,
1837 : 93 => 93,
1838 : 94 => 94,
1839 : 95 => 95,
1840 : 96 => 96,
1841 : 97 => 97,
1842 : 98 => 98,
1843 : 100 => 100,
1844 : 101 => 101,
1845 : 102 => 102,
1846 : 103 => 103,
1847 : 105 => 105,
1848 : 106 => 106,
1849 : 108 => 108,
1850 : 110 => 110,
1851 : 111 => 111,
1852 : 114 => 111,
1853 : 125 => 111,
1854 : 112 => 112,
1855 : 113 => 113,
1856 : 115 => 115,
1857 : 116 => 116,
1858 : 117 => 117,
1859 : 122 => 117,
1860 : 118 => 118,
1861 : 121 => 118,
1862 : 119 => 119,
1863 : 124 => 119,
1864 : 120 => 120,
1865 : 123 => 120,
1866 : 126 => 126,
1867 : 127 => 127,
1868 : 128 => 128,
1869 : 129 => 129,
1870 : 130 => 130,
1871 : 131 => 131,
1872 : 132 => 132,
1873 : 133 => 133,
1874 : 134 => 134,
1875 : 135 => 135,
1876 : 136 => 136,
1877 : 137 => 137,
1878 : 138 => 138,
1879 : 140 => 140,
1880 : 141 => 141,
1881 : 142 => 142,
1882 : 143 => 143,
1883 : 147 => 147,
1884 : 148 => 148,
1885 : 149 => 149,
1886 : 150 => 150,
1887 : 151 => 151,
1888 : 152 => 152,
1889 : 154 => 154,
1890 : );
1891 : /* Beginning here are the reduction cases. A typical example
1892 : ** follows:
1893 : ** #line <lineno> <grammarfile>
1894 : ** function yy_r0($yymsp){ ... } // User supplied code
1895 : ** #line <lineno> <thisfile>
1896 : */
1897 : #line 79 "internal.templateparser.y"
1898 339 : function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1899 : #line 1904 "internal.templateparser.php"
1900 : #line 85 "internal.templateparser.y"
1901 340 : function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1902 : #line 1907 "internal.templateparser.php"
1903 : #line 87 "internal.templateparser.y"
1904 311 : function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
1905 : #line 1910 "internal.templateparser.php"
1906 : #line 93 "internal.templateparser.y"
1907 311 : function yy_r3(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s);
1908 311 : if ($this->compiler->has_code) {
1909 311 : $tmp =''; foreach ($this->prefix_code as $code) {$tmp.=$code;} $this->prefix_code=array();
1910 311 : $this->_retvalue = $this->cacher->processNocacheCode($tmp.$s[0].$this->yystack[$this->yyidx + -1]->minor, $this->compiler,$this->nocache,true);
1911 311 : } else { $this->_retvalue = $s[0].$this->yystack[$this->yyidx + -1]->minor;} $this->nocache=false; }
1912 : #line 1917 "internal.templateparser.php"
1913 : #line 105 "internal.templateparser.y"
1914 8 : function yy_r5(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0]; }
1915 : #line 1920 "internal.templateparser.php"
1916 : #line 108 "internal.templateparser.y"
1917 1 : function yy_r6(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s2); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->yystack[$this->yyidx + -1]->minor.$s2[0], $this->compiler,false,false); }
1918 : #line 1923 "internal.templateparser.php"
1919 : #line 110 "internal.templateparser.y"
1920 0 : function yy_r7(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->left_delimiter, $this->compiler,false,false); }
1921 : #line 1926 "internal.templateparser.php"
1922 : #line 112 "internal.templateparser.y"
1923 0 : function yy_r8(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->right_delimiter, $this->compiler,false,false); }
1924 : #line 1929 "internal.templateparser.php"
1925 : #line 114 "internal.templateparser.y"
1926 4 : function yy_r9(){if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
1927 1 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?php".str_replace("'","\'",$this->yystack[$this->yyidx + -1]->minor)."?>';?>\n", $this->compiler, false, false);
1928 4 : } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
1929 1 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false, false);
1930 3 : }elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
1931 2 : $this->_retvalue = $this->cacher->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, false,true);
1932 2 : }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
1933 0 : $this->_retvalue = '';
1934 0 : }
1935 4 : }
1936 : #line 1941 "internal.templateparser.php"
1937 : #line 125 "internal.templateparser.y"
1938 1 : function yy_r10(){preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0];
1939 1 : if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU || $this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
1940 1 : $this->_retvalue .= $this->cacher->processNocacheCode("<?php echo '<?=$".$this->yystack[$this->yyidx + -1]->minor."?>'?>\n", $this->compiler, false, false);
1941 1 : } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
1942 0 : $this->_retvalue .= $this->cacher->processNocacheCode(htmlspecialchars('<?=$'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false, false);
1943 0 : }elseif ($this->sec_obj == SMARTY_PHP_REMOVE) {
1944 0 : $this->_retvalue .= '';
1945 0 : }
1946 1 : }
1947 : #line 1952 "internal.templateparser.php"
1948 : #line 136 "internal.templateparser.y"
1949 3 : function yy_r11(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true, true); }
1950 : #line 1955 "internal.templateparser.php"
1951 : #line 137 "internal.templateparser.y"
1952 3 : function yy_r12(){$this->_retvalue = $this->cacher->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true, true); }
1953 : #line 1958 "internal.templateparser.php"
1954 : #line 139 "internal.templateparser.y"
1955 176 : function yy_r13(){$this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler,false,false); }
1956 : #line 1961 "internal.templateparser.php"
1957 : #line 146 "internal.templateparser.y"
1958 194 : function yy_r14(){ $this->_retvalue = $this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor)); }
1959 : #line 1964 "internal.templateparser.php"
1960 : #line 150 "internal.templateparser.y"
1961 47 : function yy_r16(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor)); }
1962 : #line 1967 "internal.templateparser.php"
1963 : #line 152 "internal.templateparser.y"
1964 199 : function yy_r17(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
1965 : #line 1970 "internal.templateparser.php"
1966 : #line 154 "internal.templateparser.y"
1967 2 : function yy_r18(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor)); }
1968 : #line 1973 "internal.templateparser.php"
1969 : #line 156 "internal.templateparser.y"
1970 1 : function yy_r19(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor).'<?php echo ';
1971 1 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -2]->minor[0],'modifier')) {
1972 1 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -2]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -1]->minor. "),".$this->yystack[$this->yyidx + -2]->minor[1].");?>";
1973 1 : } else {
1974 0 : if (is_callable($this->yystack[$this->yyidx + -2]->minor[0])) {
1975 0 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -2]->minor[0], $this->compiler)) {
1976 0 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -2]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -1]->minor. "),".$this->yystack[$this->yyidx + -2]->minor[1].");?>";
1977 0 : }
1978 0 : } else {
1979 0 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -2]->minor[0] . "\"");
1980 : }
1981 : }
1982 1 : }
1983 : #line 1988 "internal.templateparser.php"
1984 : #line 170 "internal.templateparser.y"
1985 77 : function yy_r20(){if (!in_array($this->yystack[$this->yyidx + -2]->minor,array('if','elseif','while'))) {
1986 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -2]->minor . "\"");
1987 0 : }
1988 77 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); }
1989 : #line 1994 "internal.templateparser.php"
1990 : #line 174 "internal.templateparser.y"
1991 3 : function yy_r21(){ if (!in_array($this->yystack[$this->yyidx + -2]->minor,array('if','elseif','while'))) {
1992 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -2]->minor . "\"");
1993 0 : }
1994 3 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); }
1995 : #line 2000 "internal.templateparser.php"
1996 : #line 179 "internal.templateparser.y"
1997 : function yy_r22(){
1998 7 : if ($this->yystack[$this->yyidx + -8]->minor != 'for') {
1999 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -8]->minor . "\"");
2000 0 : }
2001 7 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -8]->minor,array('start'=>$this->yystack[$this->yyidx + -6]->minor,'ifexp'=>$this->yystack[$this->yyidx + -4]->minor,'varloop'=>$this->yystack[$this->yyidx + -1]->minor,'loop'=>$this->yystack[$this->yyidx + 0]->minor)); }
2002 : #line 2007 "internal.templateparser.php"
2003 : #line 184 "internal.templateparser.y"
2004 1 : function yy_r23(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
2005 : #line 2010 "internal.templateparser.php"
2006 : #line 185 "internal.templateparser.y"
2007 132 : function yy_r24(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2008 : #line 2013 "internal.templateparser.php"
2009 : #line 187 "internal.templateparser.y"
2010 : function yy_r25(){
2011 16 : if ($this->yystack[$this->yyidx + -5]->minor != 'foreach') {
2012 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -5]->minor . "\"");
2013 0 : }
2014 16 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -5]->minor,array('from'=>$this->yystack[$this->yyidx + -3]->minor,'item'=>$this->yystack[$this->yyidx + 0]->minor)); }
2015 : #line 2020 "internal.templateparser.php"
2016 : #line 192 "internal.templateparser.y"
2017 : function yy_r26(){
2018 1 : if ($this->yystack[$this->yyidx + -5]->minor != 'foreach') {
2019 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -5]->minor . "\"");
2020 0 : }
2021 1 : $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -5]->minor,array('from'=>$this->yystack[$this->yyidx + -3]->minor,'item'=>$this->yystack[$this->yyidx + 0]->minor)); }
2022 : #line 2027 "internal.templateparser.php"
2023 : #line 199 "internal.templateparser.y"
2024 154 : function yy_r27(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',$this->yystack[$this->yyidx + 0]->minor); }
2025 : #line 2030 "internal.templateparser.php"
2026 : #line 201 "internal.templateparser.y"
2027 1 : function yy_r28(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + 0]->minor)); }
2028 : #line 2033 "internal.templateparser.php"
2029 : #line 208 "internal.templateparser.y"
2030 70 : function yy_r29(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
2031 : #line 2036 "internal.templateparser.php"
2032 : #line 212 "internal.templateparser.y"
2033 288 : function yy_r31(){ $this->_retvalue = array(); }
2034 : #line 2039 "internal.templateparser.php"
2035 : #line 215 "internal.templateparser.y"
2036 113 : function yy_r32(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
2037 : #line 2042 "internal.templateparser.php"
2038 : #line 216 "internal.templateparser.y"
2039 0 : function yy_r33(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); }
2040 : #line 2045 "internal.templateparser.php"
2041 : #line 221 "internal.templateparser.y"
2042 7 : function yy_r34(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
2043 : #line 2048 "internal.templateparser.php"
2044 : #line 222 "internal.templateparser.y"
2045 1 : function yy_r35(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
2046 : #line 2051 "internal.templateparser.php"
2047 : #line 224 "internal.templateparser.y"
2048 10 : function yy_r36(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
2049 : #line 2054 "internal.templateparser.php"
2050 : #line 230 "internal.templateparser.y"
2051 80 : function yy_r37(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2052 : #line 2057 "internal.templateparser.php"
2053 : #line 234 "internal.templateparser.y"
2054 1 : function yy_r39(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
2055 : #line 2060 "internal.templateparser.php"
2056 : #line 235 "internal.templateparser.y"
2057 : function yy_r40(){
2058 15 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
2059 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2060 7 : } else {
2061 9 : if (is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
2062 8 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
2063 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2064 7 : }
2065 7 : } else {
2066 1 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
2067 : }
2068 : }
2069 13 : }
2070 : #line 2075 "internal.templateparser.php"
2071 : #line 252 "internal.templateparser.y"
2072 1 : function yy_r42(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2073 : #line 2078 "internal.templateparser.php"
2074 : #line 254 "internal.templateparser.y"
2075 12 : function yy_r43(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor; }
2076 : #line 2081 "internal.templateparser.php"
2077 : #line 256 "internal.templateparser.y"
2078 0 : function yy_r44(){ $this->_retvalue = '('. $this->yystack[$this->yyidx + -2]->minor . ').(' . $this->yystack[$this->yyidx + 0]->minor. ')'; }
2079 : #line 2084 "internal.templateparser.php"
2080 : #line 276 "internal.templateparser.y"
2081 0 : function yy_r50(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2082 : #line 2087 "internal.templateparser.php"
2083 : #line 284 "internal.templateparser.y"
2084 1 : function yy_r54(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2085 : #line 2090 "internal.templateparser.php"
2086 : #line 286 "internal.templateparser.y"
2087 71 : function yy_r55(){ $this->_retvalue = "'".$this->yystack[$this->yyidx + -1]->minor."'"; }
2088 : #line 2093 "internal.templateparser.php"
2089 : #line 287 "internal.templateparser.y"
2090 2 : function yy_r56(){ $this->_retvalue = "''"; }
2091 : #line 2096 "internal.templateparser.php"
2092 : #line 289 "internal.templateparser.y"
2093 45 : function yy_r57(){ $this->_retvalue = '"'.$this->yystack[$this->yyidx + -1]->minor.'"'; }
2094 : #line 2099 "internal.templateparser.php"
2095 : #line 292 "internal.templateparser.y"
2096 1 : function yy_r59(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2097 : #line 2102 "internal.templateparser.php"
2098 : #line 293 "internal.templateparser.y"
2099 2 : function yy_r60(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2100 : #line 2105 "internal.templateparser.php"
2101 : #line 295 "internal.templateparser.y"
2102 0 : function yy_r61(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2103 : #line 2108 "internal.templateparser.php"
2104 : #line 296 "internal.templateparser.y"
2105 0 : function yy_r62(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
2106 : #line 2111 "internal.templateparser.php"
2107 : #line 298 "internal.templateparser.y"
2108 1 : function yy_r63(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2109 : #line 2114 "internal.templateparser.php"
2110 : #line 300 "internal.templateparser.y"
2111 1 : function yy_r64(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2112 : #line 2117 "internal.templateparser.php"
2113 : #line 302 "internal.templateparser.y"
2114 0 : function yy_r65(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2115 : #line 2120 "internal.templateparser.php"
2116 : #line 304 "internal.templateparser.y"
2117 0 : function yy_r66(){ $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + -1]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
2118 : #line 2123 "internal.templateparser.php"
2119 : #line 310 "internal.templateparser.y"
2120 158 : function yy_r67(){ $this->_retvalue = '$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + 0]->minor .'\')->value'; $this->nocache=$this->template->getVariable('$this->yystack[$this->yyidx + 0]->minor')->nocache; }
2121 : #line 2126 "internal.templateparser.php"
2122 : #line 312 "internal.templateparser.y"
2123 31 : function yy_r68(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + 0]->minor['index']);} else {
2124 31 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['index']; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"))->nocache;} }
2125 : #line 2130 "internal.templateparser.php"
2126 : #line 315 "internal.templateparser.y"
2127 10 : function yy_r69(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"))->nocache; }
2128 : #line 2133 "internal.templateparser.php"
2129 : #line 319 "internal.templateparser.y"
2130 12 : function yy_r71(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
2131 : #line 2136 "internal.templateparser.php"
2132 : #line 320 "internal.templateparser.y"
2133 0 : function yy_r72(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2134 : #line 2139 "internal.templateparser.php"
2135 : #line 323 "internal.templateparser.y"
2136 69 : function yy_r73(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'index'=>$this->yystack[$this->yyidx + 0]->minor); }
2137 : #line 2142 "internal.templateparser.php"
2138 : #line 331 "internal.templateparser.y"
2139 84 : function yy_r75(){return; }
2140 : #line 2145 "internal.templateparser.php"
2141 : #line 335 "internal.templateparser.y"
2142 10 : function yy_r76(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
2143 : #line 2148 "internal.templateparser.php"
2144 : #line 336 "internal.templateparser.y"
2145 1 : function yy_r77(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
2146 : #line 2151 "internal.templateparser.php"
2147 : #line 337 "internal.templateparser.y"
2148 0 : function yy_r78(){ $this->_retvalue = "[".$this->yystack[$this->yyidx + 0]->minor."]"; }
2149 : #line 2154 "internal.templateparser.php"
2150 : #line 338 "internal.templateparser.y"
2151 13 : function yy_r79(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
2152 : #line 2157 "internal.templateparser.php"
2153 : #line 340 "internal.templateparser.y"
2154 5 : function yy_r80(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
2155 : #line 2160 "internal.templateparser.php"
2156 : #line 341 "internal.templateparser.y"
2157 0 : function yy_r81(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; }
2158 : #line 2163 "internal.templateparser.php"
2159 : #line 345 "internal.templateparser.y"
2160 3 : function yy_r83(){$this->_retvalue = ''; }
2161 : #line 2166 "internal.templateparser.php"
2162 : #line 353 "internal.templateparser.y"
2163 3 : function yy_r85(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2164 : #line 2169 "internal.templateparser.php"
2165 : #line 355 "internal.templateparser.y"
2166 88 : function yy_r86(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2167 : #line 2172 "internal.templateparser.php"
2168 : #line 357 "internal.templateparser.y"
2169 8 : function yy_r87(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2170 : #line 2175 "internal.templateparser.php"
2171 : #line 362 "internal.templateparser.y"
2172 0 : function yy_r88(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + -1]->minor['index']).$this->yystack[$this->yyidx + 0]->minor;} else {
2173 0 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['index'].$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"))->nocache;} }
2174 : #line 2179 "internal.templateparser.php"
2175 : #line 365 "internal.templateparser.y"
2176 0 : function yy_r89(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2177 : #line 2182 "internal.templateparser.php"
2178 : #line 367 "internal.templateparser.y"
2179 0 : function yy_r90(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2180 : #line 2185 "internal.templateparser.php"
2181 : #line 369 "internal.templateparser.y"
2182 0 : function yy_r91(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2183 : #line 2188 "internal.templateparser.php"
2184 : #line 370 "internal.templateparser.y"
2185 0 : function yy_r92(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2186 : #line 2191 "internal.templateparser.php"
2187 : #line 371 "internal.templateparser.y"
2188 0 : function yy_r93(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2189 : #line 2194 "internal.templateparser.php"
2190 : #line 372 "internal.templateparser.y"
2191 0 : function yy_r94(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2192 : #line 2197 "internal.templateparser.php"
2193 : #line 374 "internal.templateparser.y"
2194 0 : function yy_r95(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
2195 : #line 2200 "internal.templateparser.php"
2196 : #line 380 "internal.templateparser.y"
2197 10 : function yy_r96(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
2198 8 : if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
2199 8 : $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
2200 8 : } else {
2201 0 : $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2202 : }
2203 8 : } }
2204 : #line 2209 "internal.templateparser.php"
2205 : #line 391 "internal.templateparser.y"
2206 1 : function yy_r97(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2207 : #line 2212 "internal.templateparser.php"
2208 : #line 395 "internal.templateparser.y"
2209 0 : function yy_r98(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
2210 : #line 2215 "internal.templateparser.php"
2211 : #line 399 "internal.templateparser.y"
2212 1 : function yy_r100(){ return; }
2213 : #line 2218 "internal.templateparser.php"
2214 : #line 404 "internal.templateparser.y"
2215 3 : function yy_r101(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'false'); }
2216 : #line 2221 "internal.templateparser.php"
2217 : #line 405 "internal.templateparser.y"
2218 13 : function yy_r102(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'true'); }
2219 : #line 2224 "internal.templateparser.php"
2220 : #line 417 "internal.templateparser.y"
2221 8 : function yy_r103(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2222 : #line 2227 "internal.templateparser.php"
2223 : #line 421 "internal.templateparser.y"
2224 7 : function yy_r105(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
2225 : #line 2230 "internal.templateparser.php"
2226 : #line 422 "internal.templateparser.y"
2227 1 : function yy_r106(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2228 : #line 2233 "internal.templateparser.php"
2229 : #line 429 "internal.templateparser.y"
2230 2 : function yy_r108(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
2231 : #line 2236 "internal.templateparser.php"
2232 : #line 434 "internal.templateparser.y"
2233 24 : function yy_r110(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
2234 : #line 2239 "internal.templateparser.php"
2235 : #line 435 "internal.templateparser.y"
2236 61 : function yy_r111(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2237 : #line 2242 "internal.templateparser.php"
2238 : #line 436 "internal.templateparser.y"
2239 0 : function yy_r112(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
2240 : #line 2245 "internal.templateparser.php"
2241 : #line 437 "internal.templateparser.y"
2242 0 : function yy_r113(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
2243 : #line 2248 "internal.templateparser.php"
2244 : #line 439 "internal.templateparser.y"
2245 1 : function yy_r115(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2246 : #line 2251 "internal.templateparser.php"
2247 : #line 440 "internal.templateparser.y"
2248 1 : function yy_r116(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2249 : #line 2254 "internal.templateparser.php"
2250 : #line 441 "internal.templateparser.y"
2251 2 : function yy_r117(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2252 : #line 2257 "internal.templateparser.php"
2253 : #line 442 "internal.templateparser.y"
2254 2 : function yy_r118(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2255 : #line 2260 "internal.templateparser.php"
2256 : #line 443 "internal.templateparser.y"
2257 1 : function yy_r119(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2258 : #line 2263 "internal.templateparser.php"
2259 : #line 444 "internal.templateparser.y"
2260 3 : function yy_r120(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2261 : #line 2266 "internal.templateparser.php"
2262 : #line 450 "internal.templateparser.y"
2263 0 : function yy_r126(){$this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number; }
2264 : #line 2269 "internal.templateparser.php"
2265 : #line 452 "internal.templateparser.y"
2266 7 : function yy_r127(){$this->_retvalue = '=='; }
2267 : #line 2272 "internal.templateparser.php"
2268 : #line 453 "internal.templateparser.y"
2269 4 : function yy_r128(){$this->_retvalue = '!='; }
2270 : #line 2275 "internal.templateparser.php"
2271 : #line 454 "internal.templateparser.y"
2272 13 : function yy_r129(){$this->_retvalue = '>'; }
2273 : #line 2278 "internal.templateparser.php"
2274 : #line 455 "internal.templateparser.y"
2275 26 : function yy_r130(){$this->_retvalue = '<'; }
2276 : #line 2281 "internal.templateparser.php"
2277 : #line 456 "internal.templateparser.y"
2278 7 : function yy_r131(){$this->_retvalue = '>='; }
2279 : #line 2284 "internal.templateparser.php"
2280 : #line 457 "internal.templateparser.y"
2281 4 : function yy_r132(){$this->_retvalue = '<='; }
2282 : #line 2287 "internal.templateparser.php"
2283 : #line 458 "internal.templateparser.y"
2284 5 : function yy_r133(){$this->_retvalue = '==='; }
2285 : #line 2290 "internal.templateparser.php"
2286 : #line 459 "internal.templateparser.y"
2287 2 : function yy_r134(){$this->_retvalue = '!=='; }
2288 : #line 2293 "internal.templateparser.php"
2289 : #line 461 "internal.templateparser.y"
2290 5 : function yy_r135(){$this->_retvalue = '&&'; }
2291 : #line 2296 "internal.templateparser.php"
2292 : #line 462 "internal.templateparser.y"
2293 5 : function yy_r136(){$this->_retvalue = '||'; }
2294 : #line 2299 "internal.templateparser.php"
2295 : #line 463 "internal.templateparser.y"
2296 0 : function yy_r137(){$this->_retvalue = ' XOR '; }
2297 : #line 2302 "internal.templateparser.php"
2298 : #line 468 "internal.templateparser.y"
2299 32 : function yy_r138(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2300 : #line 2305 "internal.templateparser.php"
2301 : #line 470 "internal.templateparser.y"
2302 32 : function yy_r140(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
2303 : #line 2308 "internal.templateparser.php"
2304 : #line 471 "internal.templateparser.y"
2305 0 : function yy_r141(){ return; }
2306 : #line 2311 "internal.templateparser.php"
2307 : #line 472 "internal.templateparser.y"
2308 3 : function yy_r142(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2309 : #line 2314 "internal.templateparser.php"
2310 : #line 473 "internal.templateparser.y"
2311 1 : function yy_r143(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2312 : #line 2317 "internal.templateparser.php"
2313 : #line 481 "internal.templateparser.y"
2314 0 : function yy_r147(){$this->_retvalue = "`".$this->yystack[$this->yyidx + -1]->minor."`"; }
2315 : #line 2320 "internal.templateparser.php"
2316 : #line 482 "internal.templateparser.y"
2317 1 : function yy_r148(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; }
2318 : #line 2323 "internal.templateparser.php"
2319 : #line 483 "internal.templateparser.y"
2320 1 : function yy_r149(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + 0]->minor .'\')->value'.'."'; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"))->nocache; }
2321 : #line 2326 "internal.templateparser.php"
2322 : #line 484 "internal.templateparser.y"
2323 1 : function yy_r150(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0].'".('.$this->yystack[$this->yyidx + -1]->minor.')."'; }
2324 : #line 2329 "internal.templateparser.php"
2325 : #line 485 "internal.templateparser.y"
2326 1 : function yy_r151(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + -1]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = $s[0].'".$_tmp'.$this->prefix_number.'."'; }
2327 : #line 2332 "internal.templateparser.php"
2328 : #line 486 "internal.templateparser.y"
2329 0 : function yy_r152(){$this->_retvalue = '$'.$this->yystack[$this->yyidx + 0]->minor; }
2330 : #line 2335 "internal.templateparser.php"
2331 : #line 488 "internal.templateparser.y"
2332 0 : function yy_r154(){$this->_retvalue = '`'.$this->yystack[$this->yyidx + 0]->minor; }
2333 : #line 2338 "internal.templateparser.php"
2334 :
2335 : /**
2336 : * placeholder for the left hand side in a reduce operation.
2337 : *
2338 : * For a parser with a rule like this:
2339 : * <pre>
2340 : * rule(A) ::= B. { A = 1; }
2341 : * </pre>
2342 : *
2343 : * The parser will translate to something like:
2344 : *
2345 : * <code>
2346 : * function yy_r0(){$this->_retvalue = 1;}
2347 : * </code>
2348 : */
2349 : private $_retvalue;
2350 :
2351 : /**
2352 : * Perform a reduce action and the shift that must immediately
2353 : * follow the reduce.
2354 : *
2355 : * For a rule such as:
2356 : *
2357 : * <pre>
2358 : * A ::= B blah C. { dosomething(); }
2359 : * </pre>
2360 : *
2361 : * This function will first call the action, if any, ("dosomething();" in our
2362 : * example), and then it will pop three states from the stack,
2363 : * one for each entry on the right-hand side of the expression
2364 : * (B, blah, and C in our example rule), and then push the result of the action
2365 : * back on to the stack with the resulting state reduced to (as described in the .out
2366 : * file)
2367 : * @param int Number of the rule by which to reduce
2368 : */
2369 : function yy_reduce($yyruleno)
2370 : {
2371 : //int $yygoto; /* The next state */
2372 : //int $yyact; /* The next action */
2373 : //mixed $yygotominor; /* The LHS of the rule reduced */
2374 : //TP_yyStackEntry $yymsp; /* The top of the parser's stack */
2375 : //int $yysize; /* Amount to pop the stack */
2376 344 : $yymsp = $this->yystack[$this->yyidx];
2377 344 : if (self::$yyTraceFILE && $yyruleno >= 0
2378 344 : && $yyruleno < count(self::$yyRuleName)) {
2379 0 : fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
2380 0 : self::$yyTracePrompt, $yyruleno,
2381 0 : self::$yyRuleName[$yyruleno]);
2382 0 : }
2383 :
2384 344 : $this->_retvalue = $yy_lefthand_side = null;
2385 344 : if (array_key_exists($yyruleno, self::$yyReduceMap)) {
2386 : // call the action
2387 344 : $this->_retvalue = null;
2388 344 : $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
2389 344 : $yy_lefthand_side = $this->_retvalue;
2390 344 : }
2391 344 : $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
2392 344 : $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
2393 344 : $this->yyidx -= $yysize;
2394 344 : for($i = $yysize; $i; $i--) {
2395 : // pop all of the right-hand side parameters
2396 340 : array_pop($this->yystack);
2397 340 : }
2398 344 : $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
2399 344 : if ($yyact < self::YYNSTATE) {
2400 : /* If we are not debugging and the reduce action popped at least
2401 : ** one element off the stack, then we can push the new element back
2402 : ** onto the stack here, and skip the stack overflow test in yy_shift().
2403 : ** That gives a significant speed improvement. */
2404 344 : if (!self::$yyTraceFILE && $yysize) {
2405 340 : $this->yyidx++;
2406 340 : $x = new TP_yyStackEntry;
2407 340 : $x->stateno = $yyact;
2408 340 : $x->major = $yygoto;
2409 340 : $x->minor = $yy_lefthand_side;
2410 340 : $this->yystack[$this->yyidx] = $x;
2411 340 : } else {
2412 292 : $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2413 : }
2414 344 : } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2415 331 : $this->yy_accept();
2416 331 : }
2417 344 : }
2418 :
2419 : /**
2420 : * The following code executes when the parse fails
2421 : *
2422 : * Code from %parse_fail is inserted here
2423 : */
2424 : function yy_parse_failed()
2425 : {
2426 0 : if (self::$yyTraceFILE) {
2427 0 : fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
2428 0 : }
2429 0 : while ($this->yyidx >= 0) {
2430 0 : $this->yy_pop_parser_stack();
2431 0 : }
2432 : /* Here code is inserted which will be executed whenever the
2433 : ** parser fails */
2434 0 : }
2435 :
2436 : /**
2437 : * The following code executes when a syntax error first occurs.
2438 : *
2439 : * %syntax_error code is inserted here
2440 : * @param int The major type of the error token
2441 : * @param mixed The minor type of the error token
2442 : */
2443 : function yy_syntax_error($yymajor, $TOKEN)
2444 : {
2445 : #line 60 "internal.templateparser.y"
2446 :
2447 1 : $this->internalError = true;
2448 1 : $this->yymajor = $yymajor;
2449 1 : $this->compiler->trigger_template_error();
2450 : #line 2456 "internal.templateparser.php"
2451 0 : }
2452 :
2453 : /**
2454 : * The following is executed when the parser accepts
2455 : *
2456 : * %parse_accept code is inserted here
2457 : */
2458 : function yy_accept()
2459 : {
2460 331 : if (self::$yyTraceFILE) {
2461 0 : fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
2462 0 : }
2463 331 : while ($this->yyidx >= 0) {
2464 331 : $stack = $this->yy_pop_parser_stack();
2465 331 : }
2466 : /* Here code is inserted which will be executed whenever the
2467 : ** parser accepts */
2468 : #line 52 "internal.templateparser.y"
2469 :
2470 331 : $this->successful = !$this->internalError;
2471 331 : $this->internalError = false;
2472 331 : $this->retvalue = $this->_retvalue;
2473 : //echo $this->retvalue."\n\n";
2474 : #line 2481 "internal.templateparser.php"
2475 331 : }
2476 :
2477 : /**
2478 : * The main parser program.
2479 : *
2480 : * The first argument is the major token number. The second is
2481 : * the token value string as scanned from the input.
2482 : *
2483 : * @param int the token number
2484 : * @param mixed the token value
2485 : * @param mixed any extra arguments that should be passed to handlers
2486 : */
2487 : function doParse($yymajor, $yytokenvalue)
2488 : {
2489 : // $yyact; /* The parser action. */
2490 : // $yyendofinput; /* True if we are at the end of input */
2491 345 : $yyerrorhit = 0; /* True if yymajor has invoked an error */
2492 :
2493 : /* (re)initialize the parser, if necessary */
2494 345 : if ($this->yyidx === null || $this->yyidx < 0) {
2495 : /* if ($yymajor == 0) return; // not sure why this was here... */
2496 345 : $this->yyidx = 0;
2497 345 : $this->yyerrcnt = -1;
2498 345 : $x = new TP_yyStackEntry;
2499 345 : $x->stateno = 0;
2500 345 : $x->major = 0;
2501 345 : $this->yystack = array();
2502 345 : array_push($this->yystack, $x);
2503 345 : }
2504 345 : $yyendofinput = ($yymajor==0);
2505 :
2506 345 : if (self::$yyTraceFILE) {
2507 0 : fprintf(self::$yyTraceFILE, "%sInput %s\n",
2508 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2509 0 : }
2510 :
2511 : do {
2512 345 : $yyact = $this->yy_find_shift_action($yymajor);
2513 345 : if ($yymajor < self::YYERRORSYMBOL &&
2514 345 : !$this->yy_is_expected_token($yymajor)) {
2515 : // force a syntax error
2516 0 : $yyact = self::YY_ERROR_ACTION;
2517 0 : }
2518 345 : if ($yyact < self::YYNSTATE) {
2519 345 : $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2520 345 : $this->yyerrcnt--;
2521 345 : if ($yyendofinput && $this->yyidx >= 0) {
2522 0 : $yymajor = 0;
2523 0 : } else {
2524 345 : $yymajor = self::YYNOCODE;
2525 : }
2526 345 : } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2527 344 : $this->yy_reduce($yyact - self::YYNSTATE);
2528 345 : } elseif ($yyact == self::YY_ERROR_ACTION) {
2529 1 : if (self::$yyTraceFILE) {
2530 0 : fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
2531 0 : self::$yyTracePrompt);
2532 0 : }
2533 1 : if (self::YYERRORSYMBOL) {
2534 : /* A syntax error has occurred.
2535 : ** The response to an error depends upon whether or not the
2536 : ** grammar defines an error token "ERROR".
2537 : **
2538 : ** This is what we do if the grammar does define ERROR:
2539 : **
2540 : ** * Call the %syntax_error function.
2541 : **
2542 : ** * Begin popping the stack until we enter a state where
2543 : ** it is legal to shift the error symbol, then shift
2544 : ** the error symbol.
2545 : **
2546 : ** * Set the error count to three.
2547 : **
2548 : ** * Begin accepting and shifting new tokens. No new error
2549 : ** processing will occur until three tokens have been
2550 : ** shifted successfully.
2551 : **
2552 : */
2553 1 : if ($this->yyerrcnt < 0) {
2554 1 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2555 0 : }
2556 0 : $yymx = $this->yystack[$this->yyidx]->major;
2557 0 : if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
2558 0 : if (self::$yyTraceFILE) {
2559 0 : fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
2560 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2561 0 : }
2562 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2563 0 : $yymajor = self::YYNOCODE;
2564 0 : } else {
2565 0 : while ($this->yyidx >= 0 &&
2566 0 : $yymx != self::YYERRORSYMBOL &&
2567 0 : ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
2568 0 : ){
2569 0 : $this->yy_pop_parser_stack();
2570 0 : }
2571 0 : if ($this->yyidx < 0 || $yymajor==0) {
2572 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2573 0 : $this->yy_parse_failed();
2574 0 : $yymajor = self::YYNOCODE;
2575 0 : } elseif ($yymx != self::YYERRORSYMBOL) {
2576 0 : $u2 = 0;
2577 0 : $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2578 0 : }
2579 : }
2580 0 : $this->yyerrcnt = 3;
2581 0 : $yyerrorhit = 1;
2582 0 : } else {
2583 : /* YYERRORSYMBOL is not defined */
2584 : /* This is what we do if the grammar does not define ERROR:
2585 : **
2586 : ** * Report an error message, and throw away the input token.
2587 : **
2588 : ** * If the input token is $, then fail the parse.
2589 : **
2590 : ** As before, subsequent error messages are suppressed until
2591 : ** three input tokens have been successfully shifted.
2592 : */
2593 0 : if ($this->yyerrcnt <= 0) {
2594 0 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2595 0 : }
2596 0 : $this->yyerrcnt = 3;
2597 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2598 0 : if ($yyendofinput) {
2599 0 : $this->yy_parse_failed();
2600 0 : }
2601 0 : $yymajor = self::YYNOCODE;
2602 : }
2603 0 : } else {
2604 0 : $this->yy_accept();
2605 0 : $yymajor = self::YYNOCODE;
2606 : }
2607 345 : } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
2608 345 : }
2609 : }
|